9

问题描述:我想将我的网站设置为“Access-Control-Allow-Origin”,所以我在 apache 的配置中设置了它(几乎在任何地方),但它不起作用。我还设置了其他标题进行测试,但它仍然无法正常工作。

阿帕奇版本: 2.2.22

阿帕奇模块: http ://www.anwcl.com/test/show_modules.php

我的目标网址:

http://www.anwcl.com/test/test_only_div.html

它链接到我的本地文件:

e:\wamp\www\test\test_only_div.html

这是我的apache的配置:

E:\wamp\bin\apache\apache2.2.22\conf\httpd.conf

...
LoadModule headers_module modules/mod_headers.so
...
Include conf/extra/httpd-vhosts.conf
...

E:\wamp\bin\apache\apache2.2.22\conf\extra\httpd-vhosts.conf

NameVirtualHost *:80
<VirtualHost *:80>
    Header add Access-Control-Allow-Origin "*"
    Header echo ^TS
    Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
    ServerAdmin xxx@gmail.com
    DocumentRoot "E:/wamp/www/"
    ServerName www.anwcl.com
    ErrorLog "logs/xxx.log"
    CustomLog "logs/xxx.log" common
    <Directory "E:/wamp/www/">
        Header add Access-Control-Allow-Origin "*"
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

E:\wamp\www\.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"

E:\wamp\www\test\.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"

这是 Wireshark 的帽子,没有预期的标题:

http://www.anwcl.com/question/apache-mod-headers-not-working.jpg
http://www.anwcl.com/question/apache-mod-headers-not-working-304.jpg
4

4 回答 4

2

当我意识到我在此处找到的配置文件中修改了错误的虚拟主机时,我也遇到了这个问题并修复了它/etc/apache2/sites-enabled/000-default.conf

当我使用具有不同端口的配置时,我正在修改默认的 VirtualHost 配置。

<VirtualHost *:6000>
        Header set Access-Control-Allow-Origin "*"
</VirtualHost>

我还遇到了 Dylan Maxey 描述的错误,并通过禁用浏览器检查器中的缓存来解决它: 在基于 Chromium 的浏览器中禁用缓存 这也是我发现有用的网站的链接: https ://enable-cors.org/server_apache.html

于 2019-03-05T18:43:23.350 回答
0

检查输出php_info()以查看是否从您的 apache 网络服务器加载了 mod_headers。

于 2014-09-17T04:43:16.667 回答
0

这些更改可能已经发生,而您在浏览器中看不到这些更改。如果您提供静态文件(例如您尝试更改其标题的图像),这尤其典型。

您甚至可以在打开 Javascript 控制台查看页面时禁用 chrome 缓存,但仍然看不到更改生效。

您要查找的是响应代码。如果是 304,则服务器已经识别出您的浏览器已经具有所请求文件的有效表示,并将提供该文件。如果是这样,您将看不到在浏览器最初下载该页面后添加的标题。

要查看是否是这种情况,请将 url 更改为http://myexample.com/myimage.jpg?t=1,或任何其他随机查询参数,看看是否有效。

于 2017-12-07T22:37:41.897 回答
0

就我而言,添加Header set "key" "value"不起作用。我不得不使用RequestHeader set "key" "value"ProxyPass发送标题。

<VirtualHost *:443>
  ServerName myserver.com
  ServerAlias www.myserver.com

  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:8081/
  ProxyPassReverse / http://127.0.0.1:8081/
  RequestHeader set "X-Forwarded-Proto" "https"
  #
  # Setup SSL
  #
  # SSLProxyEngine on
  SSLEngine on
  SSLCertificateFile location-to-certificate.crt
  SSLCertificateKeyFile location-to-private.key
  SSLCertificateChainFile location-to-ca_bundle.crt
</VirtualHost>
于 2019-06-29T15:32:56.807 回答