将 CORS 预检请求链接到其目标资源意味着啥
Posted
技术标签:
【中文标题】将 CORS 预检请求链接到其目标资源意味着啥【英文标题】:What does it mean for a CORS preflight request to be chained to its target resource将 CORS 预检请求链接到其目标资源意味着什么 【发布时间】:2016-07-24 15:59:16 【问题描述】:我正在为 Jetty Servlet 配置 CORS,并发现一些 XHR 请求在预检时被拒绝。我已经设置了 Access-Control-Allow-Methods 和 Access-Control-Allow-Headers,并且根据 CrossOriginFilter 的 Jetty 文档,默认的 Access-Control-Allow Origin 标头是“*”。所以一切都应该被允许通过。
还有另一个过滤器选项,我在查找以下信息时遇到问题:
链预检 如果真正的预检请求链接到它们的目标资源 正常处理(作为 OPTION 请求)。否则过滤器会 对预检的响应。默认为真。
过滤器“响应预检”是什么意思?将请求链接到目标意味着什么?我发现的有关此选项的大多数资源都使用完全相同的措辞,并且没有提供任何进一步的解释。
在this *** response,作者说:
注意:CrossOriginFilter 有一个参数chainPreflight,默认设置为true。这需要设置为假。这是 CORS 转发 POST 而不是 OPTIONS 到 SOLR 的关键。此外,订单很重要!
虽然我没有构建 Solr 应用程序,但我想知道这是否是我的配置出错的地方。任何有助于更好地理解此选项的帮助将不胜感激!
【问题讨论】:
【参考方案1】:如果 chainPreflight
选项设置为 true(默认情况下),则 CrossOriginFilter 将添加所需的访问控制标头,并将请求传递到端点以进行进一步处理。目标端点应该有一些处理预检请求的逻辑。
如果chainPreflight
选项为false,则CrossOriginFilter 将添加所需的访问控制标头并直接响应请求。
查看my blog post 获取插图。
【讨论】:
很棒的博文。我喜欢这个小图表! :) - 我从阅读文档中得出了同样的结论。但是很高兴找到该推理的确认。 - 对我来说,chainPreflight=false 似乎在我的应用程序中最有意义。 感谢您的反馈!我很难将我的头围绕在文档上,而绘图总是有帮助:)以上是关于将 CORS 预检请求链接到其目标资源意味着啥的主要内容,如果未能解决你的问题,请参考以下文章