使用 jQuery 的 AJAX POST 请求中的自定义标头
在使用 jQuery 发起的 AJAX POST 请求中,可以包含自定义标头。但是,添加标头的机制与典型方法不同。
当您指定标头时,如示例所示:
$.ajax({ type: 'POST', url: url, headers: { "My-First-Header":"first value", "My-Second-Header":"second value" } }).done(function(data) { alert(data); });
可以理解的是,您希望标头发送为:
My-First-Header: first value My-Second-Header: second value
但是,浏览器安全措施阻止直接在初始请求中发送自定义标头值。相反,它们被放置在 Access-Control-Request-Headers 标头中。这是一种称为预检请求的安全机制。
为了允许后续请求包含实际的标头值,服务器必须配置必要的 CORS(跨源资源共享)标头。
解决这个问题的方法是以不同的方式发送标头,如给定的示例代码所示:
$.ajax({ type: "POST", beforeSend: function(request) { request.setRequestHeader("Authority", authorizationToken); }, url: "entities", data: "json=" escape(JSON.stringify(createRequestObject)), processData: false, success: function(msg) { $("#results").append("The result =" StringifyPretty(msg)); } });
这种方法实际上直接设置请求标头值,绕过 Access-Control-Request-Headers 放置。它提供了一种通过初始请求发送自定义标头的方法,无需服务器配置。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3