我尝试了不同的方法/询问谷歌/阅读后,作为最后的手段在这里问这个问题http://httpd.apache.org/docs/2.2/
我的 apache2.conf 中有以下内容
# Allow cross domain fonts
RewriteCond %{REQUEST_URI} (ttf|otf|eot|woff|svg) [OR]
RewriteCond %{QUERY_STRING} (ttf|otf|eot|woff|svg)
RewriteRule .* - [E=crossdomain:true]
# Cross domain videoplayer config
RewriteRule ^/video/player/config.json - [E=crossdomain:1]
# Cross domain for fragments
RewriteCond %{QUERY_STRING} fragment=true
RewriteRule .* - [E=crossdomain:1]
# Set header
Header set Access-Control-Allow-Origin "*" ENV=crossdomain
所有这些都运行良好。现在,我希望以下 URL 具有
访问控制允许来源“*”
...标题也是如此:
/video/player/sources.json?contentId=AVID20150102_0012&width=640&height=360
您可以发现,这样的 URL 与上面一行中的 URL 几乎相同:
RewriteRule ^/video/player/config.json - [E=crossdomain:1]
(可能) 有一个重要的区别 - 那个 (config.json) 不使用查询字符串,而这个 (sources.json) 使用了。
我尝试添加不同的规则,以便将“crossdomain”环境变量应用于 sources.json URL,但没有成功。例如:
RewriteCond %{REQUEST_URI} ^/video/player/sources.json [NC]
RewriteCond %{QUERY_STRING} ^contentId=(.*)&width=(.*)&height=(.*)
RewriteRule .* - [E=crossdomain:1]
我认为这实际上应该是正确的(但由于它不起作用,显然我错了)。
我思考问题可能与 %{REQUEST_URI} 有关,因为当我使用它时:
RewriteCond %{QUERY_STRING} contentId
RewriteCond %{QUERY_STRING} width
RewriteCond %{QUERY_STRING} height
RewriteRule .* - [E=crossdomain:1]
...所需的标头出现在响应的标头中,尽管我不希望将标头应用于一切使用这些查询参数,这样做是错误的。
答案1
您可以通过以下条件实现此目的:
RewriteCond %{REQUEST_URI} ^/video/player/sources.json$
RewriteCond %{QUERY_STRING} !=""
RewriteRule . - [E=crossdomain:1]
YMMV,可能需要进行一些调整才能与其他规则配合,但这就是方法。