Набор заголовков Access-Control-Allow-Origin в .htaccess не работает

Я не могу понять, почему мой.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: *");

Что мне не хватает?

Ответы на вопрос(8)

Это должно сработать:

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"
 Julian07 мар. 2015 г., 04:39
Также лучше использоватьHeader set в этом случае. Если код изменен и он устанавливает заголовок, Apache делаетheader add отправит двойные ** заголовки. Это сломает клиентов, таких как Restangular, например.
 Shahid Karimi12 апр. 2016 г., 14:28
Заголовки a2enmod не найдены в списке вампиров ...
 Rahul Prasad03 мая 2014 г., 10:09
Исправлено: «Метод PUT не разрешен Access-Control-Allow-Methods»
 Lucas Serafim07 апр. 2014 г., 13:46
Не забудьте активировать заголовки модуля apachea2enmod headers
 Marco Marsala05 мая 2016 г., 11:01
Не забывай, если нужно,Header add Access-Control-Allow-Credentials "true"

проведенного без работы. Использование службы проверки заголовка, хотя все работало. Брандмауэр на работе раздевал и

Будьте осторожны:

 Header add Access-Control-Allow-Origin "*"

Это не разумно предоставлять доступ всем. Желательно разрешить список только известных доверенных хостов ...

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

С уважением

 Quentin11 мар. 2019 г., 15:35
Это не сработает. Access-Control-Allow-Origin не допускается несколько значений. Вам необходимо динамически установить заголовок на основе значения заголовка запроса Origin.

http: //www.webconfs.com/http-header-check.ph. Каждый раз, когда вы его используете, оно выводит на экран неприятное объявление, но, тем не менее, оно очень полезно для проверки наличия заголовка Access-Control-Allow-Origin.

Я читаю файл .json из javascript на моей веб-странице. Я обнаружил, что добавление следующего в мой файл .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):

AllowOverride All

Сайт проверки заголовков подтвердил, что заголовок Access-Control-Allow-Origin теперь отправляется (спасибо, Миро!).

Однако Firefox 50.0.2, Opera 41.0.2353.69 и Edge 38.14393.0.0 все равно извлекают файл, дажебе заголовок Access-Control-Allow-Origin. (Примечание: они могут проверять IP-адреса, поскольку оба домена, которые я использовал, оба размещены на одном и том же сервере, на одном IPv4-адресе.)

Однако Chrome 54.0.2840.99 m (64-разрядная версия) игнорирует заголовок Access-Control-Allow-Origin и в любом случае дает сбой, сообщая ошибочно:

аголовок @No 'Access-Control-Allow-Origin' присутствует в запрашиваемом ресурсе. Происхождение ' {} @ MYDOMA 'поэтому доступ запрещен.

Я думаю, это должно быть что-то вроде «сначала». IE работает правильно; Chrome, Firefox, Opera и Edge все глючат; и Chrome являетсянаихудши. Разве это не полная противоположность обычному случаю?

вопрос, и после поиска я обнаружил, что это возможно.

Я написал файл .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
    });

См. Эту статью для справки:

Header set Access-Control-Allow-Origin в .htaccess не работает

я столкнулся с точно такой же проблемой, и ни один из ответов не сработал.

Я использовал инструмент проверки заголовков:http: //www.webconfs.com/http-header-check.ph

Я тестировал свой IP http://192.0.2.1/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://192.0.2.1/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1

Произошло перенаправление, и запрос AJAX не учитывает / выполняет перенаправления.

Оказалось, что это был пропущенный слеш в конце домена (http: //192.0.2.1/uploa/)

Я снова проверил с косой чертой в конце, и я получил это ниже. В сценарий также добавлена косая черта, и теперь она работае

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

Используйте этот инструмент, чтобы проверить, хороши ли ваши заголовки и устранить неполадки.

 gorelog24 янв. 2018 г., 03:59
Мне нужно убрать косую черту. Так рад, что нашел это. Потратил так много времени на устранение неисправностей, когда я начинал, это должно было работать несколько часов назад.
 JDavis17 нояб. 2016 г., 20:43
У меня сейчас открыто 11 вкладок, пытающихся решить эту проблему. Этот ответ должен быть в большем количестве мест.
 Adnan01 нояб. 2017 г., 00:53
это круто, хотя в моем сценарии сработали правила htaccess.

Попробуйте это в .htaccess внешней корневой папки

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

Будьте внимательны: заголовок add Access-Control-Allow-Origin "*" Совсем не разумно предоставлять доступ всем. Я думаю, что вы должны пользователь:

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

и проблема была решена.

 cchana31 авг. 2018 г., 22:02
Ошибки в журнале не были ясны относительно того, почему изменения, которые я делал, потерпели неудачу, и этот ответ очень помог.sudo a2enmod headers и перезапуск заставил его работать!

Ваш ответ на вопрос