带有自定义标头的 CORS PUT/DELETE,无需预检请求

Posted

技术标签:

【中文标题】带有自定义标头的 CORS PUT/DELETE,无需预检请求【英文标题】:CORS PUT/DELETE with custom headers without preflight request 【发布时间】:2012-11-24 03:11:23 【问题描述】:

有没有办法使用 jquery 来做到这一点而没有多余的 OPTIONS 请求?

附:顺便问一下,这样的工作流程的伟大使命是什么?

【问题讨论】:

【参考方案1】:

所以,现在很明显 OPTIONS 可能很有用,但方式有点奇怪(在我看来)。

所有 PUTDELETE 查询,以及带有修改标头的查询都是 preflight 与此类请求。伟大的任务是检查资源可用性以提供某种操作。

例如,让我们考虑对带有 ABUBAKA 标头的 http://a.com/users/100500 资源的 PUT 操作。 Preflight OPTIONS 请求将包含:

访问控制请求方法:PUT 访问控制请求标头:ABUBAKA

使用此信息,您可以决定如何处理此类请求。例如,这样的资源可以同时支持 PUT 和 DELETE 操作,并且使用 ABUBAKA 标头是可以的。在这种情况下,响应至少应包含此类标头

访问控制允许方法:PUT、DELETE 访问控制允许标头:ABUBAKA

所以,OPTIONS 是某种策略方法。

【讨论】:

以上是关于带有自定义标头的 CORS PUT/DELETE,无需预检请求的主要内容,如果未能解决你的问题,请参考以下文章

web.config 中的 <cors> 标记与带有自定义标头的 httpProtocol 之间有区别吗?

AngularJS和rails cors标头不起作用

如何为 AWS API Gateway 自定义授权方配置 CORS?

JQuery、CORS 和自定义响应标头

如何使用 CORS 启用自定义标头?

AJAX 使用 CORS 获取自定义响应标头