我正在寫一個JS腳本,它生活在一個系統中,該系統現在通過jQuery.ajaxPrefilter()中註冊的函數中的jqXHR.setRequestHeader()向所有Ajax請求添加自定義XID標頭。有什麼辦法可以刪除由setRequestHeader()設置的Ajax頭?
在我的腳本中,我需要向第三方站點發出Ajax請求,該站點的Access-Control-Allow-Headers未設置爲允許此自定義XID標頭。
看來我有3種選擇:
- 找到一個方法來刪除$就在於XID頭()的beforeSend功能,我已經證實了ajaxPrefilter()函數之後被調用。
- 完全放棄使用$ .ajax(),而只是自己編寫Ajax。
- $ .ajax()指向系統的後端,它接受定製的XID頭,並通過cURL向第三方站點執行請求。
選擇#1是首選,如果有一個簡單的方法來做到這一點,因爲它將是最乾淨和最快的路線。只是想不通如何。
我試圖重寫它這樣,但它沒有工作:
beforeSend: function(jqXHR, settings) {
jqXHR.setRequestHeader('custom-xid-header', null);
}
任何想法?
很確定這是不可能的(不幸的是)。我覺得這很容易克服,但需要通過jQuery進行更改。 'jqXHR'是一個真正的'XMLHttpRequest'的包裝對象。所有jQuery需要做的就是跟蹤任何額外的/自定義的頭文件(比如在一個Object中),並且使用像removeHeader和setHeader這樣的方法來修改這個Object。然後,當真正的請求被創建併發送時,該對象將被用於*實際*添加請求頭部到真實請求。我想根據真實的工作流程/生命週期內部,它可能會也可能不會是可能的 – Ian
大鼠,這就是我所害怕的。 –
是的,它看起來像設置值爲'空'或'「」只是設置一個空值...不刪除整個標題。將功能請求提交給jQuery可能不是一個好主意。並以此爲例。再次,它可能會也可能不會取決於內部生命週期 – Ian