JavaScript-';无访问控制允许原点';标题';尽管有人在场

JavaScript-';无访问控制允许原点';标题';尽管有人在场,javascript,php,jquery,Javascript,Php,Jquery,我有一个简单的PHP文件,它执行MySQL查询并返回结果 在PHP文件的顶部,我有以下代码: <?php header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); ?> 每次从JavaScript文件运行此代码时,都会出现以下错误: 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源

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

在PHP文件的顶部,我有以下代码:

<?php

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

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

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”


为什么会发生这种情况?

在到达发送标题的最后一页之前,会发生重定向,请找到标题;如果它位于.htaccess中,则可以将其添加到.htaccess文件中:

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

标题集访问控制允许原点“*”

或者您的另一个选择是在Ajax调用中使用最终URL,该URL将提供不带任何重定向的标题。

经过几个小时的调查,我在t3chguy的帮助下在评论中发现了这个问题

我的AJAX请求URL:“
正确,正在工作的跨原点AJAX:“

一个额外的“/”解决了这个问题

为什么?


在的帮助下,我看到在没有“/”的情况下,Apache正在进行重定向,这意味着初始请求中不存在跨源标头,因此出现了错误。

您可能和我有相同的问题,在显示标头之前是否先有重定向?从非www到wwwexample@t3chguy页眉下方有一个
require\u once
,但是没有,页眉设置在页面顶部。该文件位于主域api.mydomain.com的子域中,请尝试您的URL并检查是否存在任何奇怪的重定向行为,Chrome将自动跟踪重定向,然后您将获得最终的标题,但是Ajax只在第一个响应中检查目标头。@Quentin第一个代码示例是从数据库中提取数据的文件,基本上是API文件。下面的代码示例是从该API提取数据的JavaScript应用程序file@t3chguy看来有什么事发生了HTTP/1.1 301在检查中永久移动,这对您有什么意义吗?您可能有一些Apache代码在所有文件夹请求中添加了一个尾随斜杠。@t3chguy有那么糟糕,我应该找到并更改它吗?您自己的偏好,在我看来,它对SEO稍微好一点,因此,谷歌没有机会同时为
~/directory
~/directory/
编制索引。没问题,我希望能在下面的答案上投赞成票或其他什么;)
<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</ifModule>