推荐的CORS允许和公开标头

时间:2018-01-27 22:25:09

标签: nginx http-headers cors

enable-cors.org nginx config建议使用Access-Control-Allow-HeadersAccess-Control-Expose-Headers的以下值。但是除了Custom headers and headers various browsers *should* be OK with but aren't之外,没有多少解释为什么。如果我的应用程序不需要其中一些API请求,我宁愿不为每个API请求充电。

我知道我可以删除它们并等待某些事情要破解但是我希望能够了解它们为何/如何被选中的背景知识,这样我就可以做出更明智的决定,看看它们是否对我的申请是必要的。即他们是否建议支持我的应用程序不需要支持的浏览器?

访问控制允许标头DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range

访问控制曝光标题DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range

对于Allow-Headers,我可以理解其中大多数客户想要发送它们的原因。 X-CustomHeader虽然可以说是一个古怪的东西。另外,我在Chrome上测试过,即使User-Agent未明确允许,Chrome仍然会发送它。这意味着这些选项是为了我的应用可能不需要的浏览器兼容性而添加的。

对于Expose-Headers,似乎特定于应用程序特定于客户端需要读取的标头。为什么客户需要阅读 User-AgentDNTX-Requested-With?它们包含供服务器使用的信息,而不是客户端。此外,Cache-ControlContent-Range已经enabled by default,因此它们似乎多余。

1 个答案:

答案 0 :(得分:3)

我最终浏览了每个标题并确定是否有必要。我编制了一个变更清单:

  • AllowExpose的更改
    • 从两者中删除,因为它们是非标准标题
      • X-CustomHeader
    • 从两者中删除,因为它们是非标准和半弃用的
  • Allow的更改:
    • 已删除,因为它们是响应 - 特定标头(仅用于 服务器通知客户端)
      • Content-Range
    • 即使默认情况下已启用它们,但仅限于某些情况 请求类型(as per MDN):
      • Content-Type
  • Expose的更改:
    • 已删除,因为它们已默认启用(as per MDN
      • Cache-Control
      • Content-Type
    • 已删除,因为它们是请求 - 特定标头(仅用于 客户通知服务器)
      • DNT
      • User-Agent
      • X-Requested-With
      • If-Modified-Since
      • Range
    • 添加,因为它们似乎很有用
      • Content-Length

这让我有以下几点:

访问控制允许标头DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range

访问控制曝光标题Content-Length,Content-Range

非常感谢任何评论或更正。