使用 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-控制请求标头放置。它提供了一种在初始请求中发送自定义标头的方法,无需服务器配置。
以上是如何使用 jQuery 在 AJAX POST 请求中发送自定义标头?的详细内容。更多信息请关注PHP中文网其他相关文章!