.htaccess - 如何为每个域动态设置标头?

问题描述 投票:0回答:2

我正在尝试让 CORS 在多个域中发挥作用。

    Header add Access-Control-Allow-Origin "http://localhost, http://multiplay.io"

但是,似乎大多数浏览器只支持一个域。有人告诉我,解决方案是为每个传入域设置标头。

如何使用 .htaccess 文件执行此操作?

apache .htaccess cors
2个回答
4
投票

如果您只想交替使用两个值,则可以使用

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 *

但我想你已经知道这一点并且不想那么宽容。


0
投票

如果您使用的是 Apache 2.4+,则可以使用

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>
© www.soinside.com 2019 - 2024. All rights reserved.