在.htaccess中的标头集Access-Control-Allow-Origin不起作用

我无法弄清楚为什么我的.htaccess头设置不起作用。

我的.htaccess文件内容:

 Header set Access-Control-Allow-Origin * Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" Header always set Access-Control-Allow-Headers "*" RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] 

但是,当我删除Header的,并将其添加到index.php然后一切正常。

 header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); header("Access-Control-Allow-Headers: *"); 

我错过了什么?

这应该工作:

 Header add Access-Control-Allow-Origin "*" Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

只是为了logging,我遇到了完全相同的问题,没有任何答案的工作。

我使用了一个标题工具: http : //www.webconfs.com/http-header-check.php

我正在testing我的IP( http://xxx.xxx.xxx.xxx/upload ),返回的是以下内容:

 HTTP/1.1 301 Moved Permanently => Date => Sat, 10 Jan 2015 04:03:35 GMT Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 Location => http://xxx.xxx.xxx.xxx/upload/ Content-Length => 380 Connection => close Content-Type => text/html; charset=iso-8859-1 

发生了redirect,并且ajax请求不遵守redirect。

它发现是在域的末尾缺less斜线http://xxx.xxx.xxx.xxx/upload /

我在最后用斜线再次testing,我在下面得到了这个。 脚本中也加了一个斜线,现在它正在工作。

 HTTP/1.1 200 OK => Date => Sat, 10 Jan 2015 04:03:53 GMT Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By => PHP/5.3.8 Access-Control-Allow-Origin => * Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS Access-Control-Allow-Headers => * Content-Length => 1435 Connection => close Content-Type => text/html 

使用这个工具来testing你的头是否好,并排除发生了什么事。

我有一个共享的GoDaddy托pipe。 我也需要回答这个问题,经过四处寻找,我发现这是可能的。

我写了一个.htaccess文件,将其放在与我的操作页面相同的文件夹中。 这里是.htaccess文件的内容:

 Header add Access-Control-Allow-Origin "*" Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

这是我的ajax调用:

  $.ajax({ url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php', //server script to process data type: 'POST', xhr: function() { // custom xhr myXhr = $.ajaxSettings.xhr(); if(myXhr.upload){ // check if upload property exists myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload } return myXhr; }, //Ajax events beforeSend: beforeSendHandler, success: completeHandler, error: errorHandler, // Form data data: formData, //Options to tell JQuery not to process data or worry about content-type cache: false, contentType: false, processData: false }); 

看到这篇文章供参考:

在.htaccess中的标头集Access-Control-Allow-Origin不起作用

我激活了Apache模块头文件a2enmod头文件,问题已经解决。

注意:标题添加访问控制 – 允许来源“*”这是不明智的,以授予访问所有人。 最好只允许知道可信主机的列表…

 Header add Access-Control-Allow-Origin "http://aaa.com" Header add Access-Control-Allow-Origin "http://bbb.com" Header add Access-Control-Allow-Origin "http://ccc.com" 

问候,

在外部根文件夹的.htaccess中试试这个

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

注意:标题添加访问控制 – 允许来源“*”这是不明智的,以授予访问所有人。 我想你应该用户:

 <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "http://example.com" </IfModule> 

我为链接到标题检查器网站http://www.webconfs.com/http-header-check.php的; Miro的答案+1了。 它会在您每次使用时popup一个令人讨厌的广告,但它对validationAccess-Control-Allow-Origin标题的存在非常有用。

我正在阅读从我的网页上的JavaScript .json文件。 我发现添加以下内容到我的.htaccess文件解决了在IE 11(版本11.447.14393.0)中查看我的网页时的问题:

 <FilesMatch "\.(json)$"> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> </FilesMatch> 

我还在/etc/httpd.conf(Apache的configuration文件)中添加了以下内容:

 AllowOverride All 

标头检查器网站validation访问控制允许起源头正在发送(谢谢,米罗!)。

但是,即使没有 Access-Control-Allow-Origin标头,Firefox 50.0.2,Opera 41.0.2353.69和Edge 38.14393.0.0也会以任何方式获取文件。 (注意:他们可能正在检查IP地址,因为我使用的两个域都在同一个服务器上,在相同的IPv4地址上)。

但是,Chrome 54.0.2840.99 m(64位)会忽略Access-Control-Allow-Origin标题,并以任何方式错误地报告:

请求的资源上没有“Access-Control-Allow-Origin”标题。 原因' {mydomain} '因此不允许访问。

我认为这应该是某种“第一”。 IE正常工作; Chrome,Firefox,Opera和Edge都是越野车; Chrome是最糟糕的 。 这不正常的情况正好相反吗?

花了半天没有工作。 虽然一切正常,但使用标题检查服务。 工作中的防火墙正在剥离它们