我正在尝试让 CORS 在多个域中发挥作用。
Header add Access-Control-Allow-Origin "http://localhost, http://multiplay.io"
但是,似乎大多数浏览器只支持一个域。有人告诉我,解决方案是为每个传入域设置标头。
如何使用 .htaccess 文件执行此操作?
如果您只想交替使用两个值,则可以使用
SetEnvIf
来区分这两个值。
SetEnvIf Referer "^http://localhost/" is_localhost
Header add Access-Control-Allow-Origin http://localhost env=is_localhost
Header add Access-Control-Allow-Origin http://multiplay.io env!=is_localhost
可能有一个更优雅的解决方案,但类似上面(未经测试)的指令应该可以工作。
(请注意,伪造 Referer 标头很简单,因此在将 Referer 标头用于几乎所有内容时,请注意伪造 Referer 标头的安全隐患。)
此外,如果您只想允许所有主机,您可以指定
*
而不是列出多个主机名:
Header add Access-Control-Allow-Origin *
但我想你已经知道这一点并且不想那么宽容。
IF, ELSEIF, ELSE
指令。
# if production
<If "req('Host') == 'multiplay.io'">
Header add Access-Control-Allow-Origin http://multiplay.io
</If>
# if localhost
<ElseIf "req('Host') == 'localhost'">
Header add Access-Control-Allow-Origin http://localhost
</ElseIf>
# if not either
<Else>
</Else>