如何使用.htaccess和/或PHP使跨域请求与重定向一起使用?

时间:2019-04-07 16:17:43

标签: apache .htaccess firefox cors http-headers

我有2个网站,AB

网站A应该向B/somescript.php发出AJAX请求。

在网站B上,我正在使用.htaccess文件将http://domain.tld重定向到https://www.domain.tld,如下所示:

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

现在,考虑到网站A将发出跨域请求的事实,浏览器应该会看到一个Access-Control-Allow-Origin标头,我很乐意将其添加到{ {1}}文件如下:

.htaccess

,但Firefox似乎没有考虑到该Header set Access-Control-Allow-Origin "*" 字符。而且我希望它可以与多个wildcard网站一起使用。

如果我将标题设置在A内,那将毫无用处,因为浏览器将永远无法访问该PHP文件。 (已测试)

有什么办法可以使用变量在B/somescript.php内设置标题吗?

我尝试过:.htaccess,但出现500-内部服务器错误。

1 个答案:

答案 0 :(得分:0)

事实证明,浏览器实际上是在跟随重定向,到达B/somescript.php,但是我发送的Access-Control-Allow-Origin标头不包含协议(https://)。

因此,Access-Control-Allow-Origin响应标头必须与浏览器发送的请求Origin标头完全匹配:

https://www.domain.tld 而不是 www.domain.tld