JavaScript - '无访问控制允许原点'标题'尽管有一个存在

时间:2014-08-05 12:45:06

标签: javascript php jquery

我有一个简单的PHP文件,它执行MySQL查询并返回结果。

在PHP文件的顶部,我有这段代码:

<?php

header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');

?>

我知道这就好像我要在Chrome中检查一样,如果我查看“网络”标签中返回的请求标题,我可以看到标题已成功设置。

现在我使用jQuery从另一个域的JavaScript文件中调用:

var getMyResults = $.ajax({
    url: "http://mydomain.uk/myphpfile.php",
    data: {something: "someData"},
    dataType: "JSON",
    type: "GET"
});

每次我从JavaScript文件运行此代码时,都会出现以下错误:

XMLHttpRequest无法加载http://mydomain.uk/myphpfile.php。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://myotherdomaincallingthefile.uk”访问。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

在你到达最后一页之前有一个重定向,它发送标题,找到它;如果它在.htaccess中,你可以将其添加到.htaccess文件中:

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</ifModule>

或您的其他选项在您的Ajax调用中使用最终的URL,这将提供标题而不会有任何重定向。

答案 1 :(得分:0)

经过几个小时的调查后,我在评论的帮助下找到了t3chguy的问题。

我的AJAX请求网址:&#34; http://mydomain.uk/directory&#34;
正确,工作交叉起源AJAX:&#34; http://mydomain.uk/directory/&#34;

一个额外的&#34; /&#34;解决了这个问题。

<强>为什么吗

http://redirectcheck.com/的帮助下,我看到没有&#39; /&#39; Apache正在进行重定向,这意味着该初始请求中没有交叉原始标题,因此出现错误。