XMLHttpRequest withCredentials 屬性

admin發表於2020-06-03

為了防止或者降低 CSRF 攻擊的可能性,AJAX 跨域請求不會傳送 Cookie 和 HTTP 認證資訊。

但實際應用中,伺服器可能會需要跨域請求客戶端的 Cookie 等資訊。

withCredentials 屬性的設定至關重要,伺服器端也需要相關設定

關於 XMLHttpRequest 內容參閱 XMLHttpRequest  物件 一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
xhr.withCredentials = false | true

AJAX 跨域請求時需要向目標伺服器傳送 Cookie 等資訊,需將 withCredentials 設定為 true 。

[JavaScript] 純文字檢視 複製程式碼
let xhr = new XMLHttpRequest();
xhr.open("POST", "https:www.softwhy.com/do.php", true);
xhr.withCredentials = true;
xhr.send();

withCredentials 預設值為 false ,需要顯式將其設定為 true。

但是僅在 客戶端 設定 withCredentials 屬性值為 true 是不夠的的。

伺服器需要將 Access-Control-Allow-Credentials 設定為 true

[JavaScript] 純文字檢視 複製程式碼
Access-Control-Allow-Credentials: true

用於告知瀏覽器可以向伺服器傳送 客戶端的 Cookie 等資料。

相關文章