apache2 mod_headers не работает

Описание вопроса: я хочу установить для своего сайта "Access-Control-Allow-Origin", поэтому я установил его в конфигурации apache (почти где угодно), но это не работает. Я также установил другие заголовки для тестирования, но они тоже не работают.

Версия Apache: 2.2.22

Модули Apache: http://www.anwcl.com/test/show_modules.php

Мой целевой URL:

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 [email protected]
    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

person naivegeek    schedule 13.10.2013    source источник


Ответы (4)


Я также столкнулся с этой проблемой и исправил ее, когда понял, что изменяю неправильный виртуальный хост в моем файле конфигурации, найденном здесь: /etc/apache2/sites-enabled/000-default.conf.

Я модифицировал конфигурацию VirtualHost по умолчанию, когда использовал ее с другим портом.

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

Я также столкнулся с ошибкой, описанной Диланом Макси, и обошел ее, отключив кеш в инспекторе браузера: Отключение кеша в браузере на основе Chromium Вот также ссылка на сайт, который мне показался полезным: https://enable-cors.org/server_apache.html

person C MaCleif    schedule 05.03.2019

Проверьте вывод php_info(), чтобы узнать, загружается ли mod_headers с вашего веб-сервера apache.

person Marcel Grolms    schedule 17.09.2014
comment
Ага, загружается. но все же фактический заголовок, упомянутый в вопросе, не добавлен. - person indianwebdevil; 12.10.2017

Возможно, изменения произошли, но вы не видите их в своем браузере. Это особенно типично, если вы обслуживаете статические файлы, такие как изображения, заголовки которых вы пытаетесь изменить.

Вы даже можете отключить кэш Chrome при просмотре страницы с открытой консолью Javascript и все равно не увидеть, как изменения вступят в силу.

Что вам нужно искать, так это код ответа. Если это 304, сервер распознал, что ваш браузер уже имеет допустимое представление запрошенного файла, и будет обслуживать этот файл. Если это так, вы не увидите заголовки, которые вы добавили после того, как ваш браузер изначально загрузил эту страницу.

Чтобы проверить, так ли это, измените URL-адрес на http://myexample.com/myimage.jpg?t=1 или любой другой случайный параметр запроса и посмотрите, работает ли это.

person Dylan Maxey    schedule 07.12.2017

В моем случае добавление 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>
person sgsweb    schedule 29.06.2019