这三个标头是使用PHP添加的
header('Content-Type: application/json; charset=UTF-8;');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Origin: *');
发送的所有标头是:
HTTP/1.1 200 OK
Date: Mon, 30 Jun 2014 06:39:29 GMT
Server: Apache
X-Powered-By: PHP/5.3.28
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Origin: *
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Cache-Control: max-age=1, private, must-revalidate
Content-Length: 20
Keep-Alive: timeout=3, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=UTF-8;
但是,当尝试使用$.json或$.post定位此服务器时,我在Chrome控制台中收到此错误:
XMLHttpRequest cannot load http://cms.webdevguru.co.uk/gurucms.php?mode=addto&apikey=606717496665bcba. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://remote.webdevguru.co.uk' is therefore not allowed access.
我知道这可能是其他一些问题的重复,但是由于我已经遍历了许多问题并尝试了其中的一些尝试来解决此问题:我希望能有一些具体的答复来解决我的问题.
正如Joachim Isaksson指出的,这是因为初始标头包含301重定向,在检查Access-Control-Allow-Origin标头之前,是否有任何方法可以强制请求遵循重定向?
解决方法:
CORS无法正常工作的原因是您的链接给出了一个“ 301永久移动”而没有CORS标头,从而重定向到了另一个链接.
它重定向到的链接将发送标头,但是CORS似乎已经放弃了对第一个响应的准备工作.
将301传递回“ Access-Control-Allow-Origin”标头可能会解决您的问题,该问题应允许预检继续进行.