我试图在这里作为最后的手段尝试不同的事情/要求谷歌/阅读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如下所示
Access-Control-Allow-Origin“*”
…标题也是:
/video/player/sources.json?contentId=AVID20150102_0012&width=640&height=360
正如你所看到的,这样一个URL几乎和上面一行中的一样:
RewriteRule ^/video/player/config.json - [E=crossdomain:1]
与(也许)一个重要的区别 – 一个(config.json)不使用查询string和这个(sources.json)。
我尝试添加不同的规则,以便将“crossdomain”环境variables应用于sources.jsonurl,但没有成功。 例如:
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]
…所需的头文件出现在响应的头文件中,但是我不希望将头文件应用于使用这些查询参数的所有东西 ,这将是一个错误的事情。
您可以通过以下条件来完成此操作:
RewriteCond %{REQUEST_URI} ^/video/player/sources.json$ RewriteCond %{QUERY_STRING} !="" RewriteRule . - [E=crossdomain:1]
YMMV,并可能需要一些调整,以处理另一个规则,但这是方式。