使用 jQuery 发出 AJAX POST 请求时,可以包含自定义标头来控制请求的行为。然而,了解访问控制请求标头 (CORS) 在跨源请求中的作用至关重要。
默认情况下,jQuery 在跨源请求前添加 OPTIONS 请求以启动预检检查。此检查可确保服务器允许原始请求中包含的特定 HTTP 方法和标头。在此飞行前检查期间,jQuery 会自动将 Access-Control-Request-Headers 标头添加到请求中,该标头指定原始请求中存在的自定义标头。
在提供的示例中:
$.ajax({ ... headers: { "My-First-Header":"first value", "My-Second-Header":"second value" } ... })
请求参数包含两个自定义标头。启动飞行前检查时,浏览器会自动将请求标头修改为以下内容:
... Access-Control-Request-Headers: My-First-Header,My-Second-Header ...
这可确保服务器知道要包含在实际 POST 请求中的自定义标头。但是,自定义标头本身并不存在于飞行前检查请求中。
要将自定义标头包含在实际的 POST 请求中,您可以使用 beforeSend 函数,如下所示:
$.ajax({ ... beforeSend: function(xhr) { xhr.setRequestHeader("My-First-Header", "first value"); xhr.setRequestHeader("My-Second-Header", "second value"); } ... })
在这种情况下,自定义标头将直接包含在 POST 请求中,而不会触发飞行前检查。请注意,对于跨源请求,服务器必须在其 Access-Control-Allow-Headers 响应标头中显式允许指定的标头。
以上是如何在 AJAX POST 请求中包含自定义标头而不触发飞行前检查?的详细内容。更多信息请关注PHP中文网其他相关文章!