在我的 Web 服务器上的 .htaccess 文件中,我设置了以下 CORS 标头:
Header set Access-Control-Allow-Origin "example.com"
在我从本地主机工作时经常调用的一个 PHP 脚本中,我设置了以下标头:
header("Access-Control-Allow-Origin: *");
直到昨天,当我为 PHP 打开 FPM 时,这一直对我有用。现在我收到以下错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.example.com/script.php. (Reason: CORS header 'Access-Control-Allow-Origin' does not match '*, example.com').
我只在从本地主机调用时收到该错误,而不是从网站调用时。我想知道既然.htaccess
启用了 FPM,是否有办法通过 PHP 覆盖 CORS 标头。
好奇,这好像
Header merge
被调用了,而不是Header set
?像这样的“合并”值不受Allow-Control-Allow-Origin
标头官方支持,因此浏览器支持可能会有所不同,并会解释为什么它不适合您。我认为您需要尝试使 Apache 不会覆盖 PHP 设置的标头(之前设置的),而不是 PHP 覆盖 Apache。尝试
setifempty
操作:您也可以尝试
always
条件,即。Header always set ....
- 这是与默认onsuccess
标题不同的“组”标题,应该意味着标题有效设置了两次。但是,我也不认为多个
Access-Control-Allow-Origin
标头严格地是标准的一部分,因此浏览器的行为可能会有所不同。另请参阅 StackOverflow 上的以下相关问题: