Я использую редирект 307 mod_rewrite
править в моем .htaccess
перенаправить все /api/...
запросы к apiHandler.php
и у меня проблемы с CORS.
мой .htaccess
RewriteEngine On
RewriteRule ^api/(.*)$ /apiHandler.php [NC,R=307]
мой 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."
пока у меня конкретно этот заголовок есть в моем apiHandler.php
Я не знаю, в чем проблема.
После небольшого исследования я узнал, что URL-адрес перенаправления должен также включать Access-Control-Allow-Origin
заголовок, иначе браузер остановится прямо здесь с попыткой междоменного запроса. Но я уже пытался также добавить эти заголовки в мой .htaccess
без удачи
Есть идеи?
Спасибо @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 ...
, это сообщение объясняет разницу между ними
Других решений пока нет …