我想将我的 Apache 2.4 配置为以 CORS 友好的方式提供一些静态资源。我已经有以下设置:
Header always set Access-Control-Allow-Origin "*"
但是,对于最近的 Safari,这似乎还不够:
[错误]加载资源失败:请求标头字段… 不允许
Access-Control-Allow-Headers
。
以这种方式提到的字段包括Accept-Encoding
and DNT
,但我想在添加它们之后我可能还会看到Cache-Control
, Origin
and Accept-Language
,因为这些是Access-Control-Request-Headers
Safari 发送的标头中提到的字段。但是谁能告诉我 Safari 或其他浏览器现在或将来可能会为我自己或其他具有不同配置的用户请求哪些其他标头?由于我不太了解的原因,显然*
不是标题的有效设置。Access-Control-Allow-Headers
那么我如何配置服务器只说“在任何地方使用这些资源,我不关心他们的 CORS”?
*
Access-Control-Allow-Headers
现在是至少对于非凭据请求的有效值;但由于这是对规范的一个相当新的补充,它可能还没有到达浏览器。我发现的一种解决方案是,您可以将所有请求的标头回显到浏览器,而不是显式添加标头。在 Stack Overflow 上建议了这种方法,但该帖子没有提供这样做的静态配置。
在阅读了关于
Header
和表达式的文档后,我设法使用以下行实现了这一点:我不确定这可能带来的安全隐患,因此请照常使用,风险自负。