ZAYEC77
@ZAYEC77
web-developer

Почему в yii2 отменяется запрос и запускается handleFatalError при CORS?

Разрабатываю сервис на Yii2 и AngularJS. Настроил CORS.
.htaccess:
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
<IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
   Header set Access-Control-Allow-Credentials true
   Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, PATCH, HEAD"
   Header set Access-Control-Allow-Headers "Authorization, Content-Type, Response-Type, If-Modified-Since"
   Header set Access-Control-Expose-Headers "Content-disposition, X-Pagination-Current-Page, X-Pagination-Page-Count, X-Pagination-Per-Page, X-Pagination-Total-Count, Link"
</IfModule>

Большинство запросов работает корректно, но когда я использую Http cache и отдаю код 304.
Получаю ошибку:
No 'Access-Control-Allow-Origin' header is present on the requested resource ..
Запрос соответственно отменен.
И еще одна особенность (увидел через x-debug):
После завершения выполнения скрипта запускается ErrorHandler::handleFatalError()
Сервер:
PHP 5.4
Xdebug v2.2.5
P.S.: через REST-клиент все норм. Помогите, пожалуйста
  • Вопрос задан
  • 5781 просмотр
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Нельзя использовать AllowOrigin * вместе с AllowCredentials.
Либо AllowOrigin * и отсутствие AllowCredentials, либо AllowOrigin domain1 domain2 domainN вместе с AllowCredentials.
Ответ написан
AMar4enko
@AMar4enko
Ошибка
No 'Access-Control-Allow-Origin' header is present on the requested resource

на имеет к Yii никакого отношения, судя по вашему сетапу.

Я не силен в апаче, но по-моему у вас mod_headers добавляет эти ваши заголовки только в случае 200 статуса ответа, во всяком случае в документации написано так:
The default value of onsuccess may need to be changed to always under the circumstances similar to those listed below.

Попробуйте написать:
Header always set Access-Control-Allow-Origin "*"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы