我在mod_rewrite
中使用307重定向.htaccess
规则将所有/api/...
请求重定向到apiHandler.php
,但是在使用CORS时遇到了麻烦。 / p>
我的.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
中,但是没有运气。
有什么想法吗?
答案 0 :(得分:1)
谢谢@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 ...
。 post解释了两者之间的区别。