Php 如何绕过307重定向上的CORS错误
我在Php 如何绕过307重定向上的CORS错误,php,.htaccess,cors,http-status-code-307,Php,.htaccess,Cors,Http Status Code 307,我在.htaccess中使用307重定向mod_rewrite规则将所有/api/…请求重定向到apidhandler.php,我在CORS上遇到了问题 我的.htaccess RewriteEngine On RewriteRule ^api/(.*)$ /apiHandler.php [NC,R=307] MyapiHandler.php <?php header("Access-Control-Allow-Origin: http://localhost:4200"); head
.htaccess
中使用307重定向mod_rewrite
规则将所有/api/…
请求重定向到apidhandler.php
,我在CORS上遇到了问题
我的.htaccess
RewriteEngine On
RewriteRule ^api/(.*)$ /apiHandler.php [NC,R=307]
MyapiHandler.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");
...
?>
但是我在我的apichandler.php
中特别有这个头,所以我不知道问题出在哪里
在做了一点研究之后,我听说重定向URL还必须包含一个访问控制允许来源
标题,否则浏览器将停止尝试跨域请求。但我已经尝试过将这些标题添加到我的.htaccess
,但没有成功
有什么想法吗?谢谢!我的问题的解决方案是从我的apichandler.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]
请注意使用
标题始终设置…
而不是标题设置…
。这解释了两者之间的区别。确保您还将Access Control Allow Origin response标头添加到/api/students/1/courses
路由的响应中。在浏览器devtools中检查响应,确认响应中有标题。/api/students/1/courses
不是真正的端点。我想重定向到apidhandler.php
来解析REST api url,这样我就可以路由到正确的REST名词。@sideshowbarker,因为它不是一个真正的端点,所以如果有意义的话,我无法向它添加头。是的,我现在明白了。那么您是否尝试过在.htaccess中添加标题?如果可以,请尝试添加.htaccess:标题始终设置访问控制允许源”http://localhost:4200“\n标头始终将访问控制允许凭据设置为“真”\n标头始终将访问控制允许标头设置为“内容类型”
。
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]