Как обойти ошибку CORS при перенаправлении 307 - PullRequest
0 голосов
/ 13 октября 2018

Я использую правило перенаправления 307 mod_rewrite в своем .htaccess для перенаправления всех /api/... запросов на apiHandler.php, и у меня возникают проблемы с CORS.

My .htaccess

RewriteEngine On
RewriteRule ^api/(.*)$ /apiHandler.php [NC,R=307]

My apiHandler.php

<?php

header("Access-Control-Allow-Origin: http://localhost:4200");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type");
header("Content-Type: application/json");

...

?>

Всякий раз, когда я делаю запрос API в моем интерфейсе, я получаю сообщение об ошибке CORS,

"...has been blocked by CORS policy: No 'Access-Control-Allow-Origin` header is present on the request resource."

cors issue

все же у меня конкретно есть этот заголовок в моем apiHandler.php, поэтому я не знаю, в чем проблема.

После небольшого выполненияВ ходе исследования я слышал, что URL-адрес перенаправления должен также содержать заголовок Access-Control-Allow-Origin, иначе браузер сразу же остановится при попытке междоменного запроса.Но я уже попытался также добавить эти заголовки в мой .htaccess, но не повезло.

Есть идеи?

1 Ответ

0 голосов
/ 14 октября 2018

Спасибо @ sideshowbarker !Решением моей проблемы было удаление заголовков из моего apiHandler.php и добавление их в мой .htaccess.

Header always set Access-Control-Allow-Origin "http://localhost:4200"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Headers "Content-Type"
Header always set Content-Type "application/json"

RewriteEngine On
RewriteRule ^api/(.*)$ /apiHandler.php [NC,R=307]

Обратите внимание на использование Header always set ... вместо Header set ....Этот пост объясняет разницу между ними.

...