【发布时间】:2016-03-08 21:56:12
【问题描述】:
我需要添加一些常见的额外信息(需要与我们的大多数 http 请求一起发送)来跨域 http 请求,额外的数据是设备信息或位置信息之类的东西。我们目前正在为这些信息使用自定义 http 标头,但是自定义标头会使浏览器在真正的 http 请求之前发送预检请求,因此出于性能考虑,我们希望删除预检请求。我们首先考虑使用cookie,但是由于请求是跨域的,所以我们不能用javascript为我们的API的域设置cookie。然后我搜索了文档,据Mozilla docs:
特别是,在以下情况下会预检请求:
它使用 GET、HEAD 或 POST 以外的方法。此外,如果使用 POST 发送 Content-Type 以外的请求数据 application/x-www-form-urlencoded、multipart/form-data 或 text/plain, 例如如果 POST 请求使用 application/xml 或 text/xml,然后预检请求。
它在请求中设置自定义标头(例如,请求使用标头 比如X-PINGOTHER)
所以我想如果我使用很少使用的standard http header:“From”标头,它不会触发选项请求。但是在我测试之后,我发现我错了,“From”标头仍然触发选项请求。
所以我有两个问题:
- 为什么标准的 http 标头会触发预检请求?
- 如何在不触发预检请求的情况下发送额外信息?
任何帮助将不胜感激。
【问题讨论】:
-
对于
why部分,请检查:stackoverflow.com/a/16945321/550618
标签: javascript http cors preflight custom-headers