首頁  >  文章  >  web前端  >  如何避免在 jQuery AJAX POST 請求中的「Access-Control-Request-Headers」標頭中設定自訂標頭?

如何避免在 jQuery AJAX POST 請求中的「Access-Control-Request-Headers」標頭中設定自訂標頭?

DDD
DDD原創
2024-11-05 14:36:02537瀏覽

How to Avoid Setting Custom Headers in the

使用jQuery 處理AJAX POST 請求中的複雜標頭

背景:

在使用jQueryPOST中,自訂標頭可以添加以增強與伺服器的通訊。挑戰在於觀察自訂標頭被添加到不太常見的「Access-Control-Request-Headers」標頭中,而不是預期的標頭中。

說明:

當瀏覽器將AJAX 請求傳送到與其啟動的網域不同的網域時,瀏覽器會先傳送一個「預檢」要求(OPTIONS 方法)來檢查伺服器是否允許自訂標頭。這樣做是為了防止跨站腳本 (XSS) 攻擊。

作為此預檢請求的一部分,瀏覽器會新增「Access-Control-Request-Headers」標頭,其中列出了將要執行的自訂標頭發送實際請求。伺服器回應「204 No Content」狀態代碼和「Access-Control-Allow-Headers」標頭,指定允許哪些自訂標頭。

解決方案:

為了避免這種行為並直接在POST 請求中設定自訂標頭,您可以在jQuery Ajax 呼叫的「beforeSend」函數中明確設定標頭。這可確保在發送請求之前將標頭新增至請求中,從而繞過預檢請求程序。

以下是如何在jQuery Ajax 呼叫中設定標頭的範例:

$.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));
  }
});

透過在「beforeSend」函數中設定標頭,jQuery 會將「Authority」標頭加入實際的POST 請求中,可讓您傳遞自訂標頭並接收預期的伺服器回應。

以上是如何避免在 jQuery AJAX POST 請求中的「Access-Control-Request-Headers」標頭中設定自訂標頭?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn