- AJAX 教程
- AJAX - 首頁
- AJAX - 什麼是 AJAX?
- AJAX - 歷史
- AJAX - 動態網站與靜態網站
- AJAX - 技術
- AJAX - 動作
- AJAX - XMLHttpRequest
- AJAX - 傳送請求
- AJAX - 請求型別
- AJAX - 處理響應
- AJAX - 處理二進位制資料
- AJAX - 提交表單
- AJAX - 檔案上傳
- AJAX - FormData 物件
- AJAX - 傳送 POST 請求
- AJAX - 傳送 PUT 請求
- AJAX - 傳送 JSON 資料
- AJAX - 傳送資料物件
- AJAX - 監控進度
- AJAX - 狀態碼
- AJAX - 應用
- AJAX - 瀏覽器相容性
- AJAX - 例子
- AJAX - 瀏覽器支援
- AJAX - XMLHttpRequest
- AJAX - 資料庫操作
- AJAX - 安全性
- AJAX - 問題
- Fetch API 基礎
- Fetch API - 基礎
- Fetch API 與 XMLHttpRequest
- Fetch API - 瀏覽器相容性
- Fetch API - 頭部資訊
- Fetch API - 請求
- Fetch API - 響應
- Fetch API - 主體資料
- Fetch API - 憑據
- Fetch API - 傳送 GET 請求
- Fetch API - 傳送 POST 請求
- Fetch API - 傳送 PUT 請求
- Fetch API - 傳送 JSON 資料
- Fetch API - 傳送資料物件
- Fetch API - 自定義請求物件
- Fetch API - 上傳檔案
- Fetch API - 處理二進位制資料
- Fetch API - 狀態碼
- Stream API 基礎
- Stream API - 基礎
- Stream API - 可讀流
- Stream API - 可寫流
- Stream API - 變換流
- Stream API - 請求物件
- Stream API - 響應體
- Stream API - 錯誤處理
- AJAX 有用資源
- AJAX - 快速指南
- AJAX - 有用資源
- AJAX - 討論
Fetch API - 憑據
在 Fetch API 中,cookie、授權標頭和 TLS 客戶端證書被稱為憑據。我們也可以說憑據是數字文件(例如密碼、使用者名稱、證書等),用於在向伺服器發出請求時確認使用者或客戶端的身份。
讓我們更詳細地瞭解一下這些憑據:
Cookie − 它們是 Web 瀏覽器儲存並與所有相同來源請求一起傳送的小資料塊。它用於儲存會話資訊、常用資料等。它們還控制其會話、範圍和可訪問性。Cookie 也由伺服器在 Set-Cookie 標頭的幫助下發送。
授權標頭 − 這些包括包含身份驗證資訊(如密碼、使用者名稱、金鑰等)的 HTTP 標頭。授權標頭用於實現各種身份驗證方案,並透過各種方法(如雜湊、加密等)由伺服器驗證。
TLS 客戶端證書 − 它們是由認證機構提供的並安裝在客戶端裝置上的數字證書。它們用於在藉助傳輸層安全與伺服器建立安全連線時提供客戶端的身份證明。
憑據屬性
credentials 屬性控制是否在跨域請求中傳送 cookie 和其他憑據證書。它是 fetch() 函式中的一個可選屬性。
語法
fetch(resourceURL, {credentials:"include"})
此屬性可以具有以下三個值之一:
omit − 當 credentials 屬性的值設定為 omit 時,這意味著瀏覽器將從請求中刪除所有憑據,並忽略響應中傳送的憑據。
same-origin − 當 credentials 屬性的值設定為 same-origin 時,這意味著瀏覽器將在對與請求頁面相同來源的請求中包含憑據。並且只使用來自相同來源 URL 的憑據。這是此屬性的預設值。
include − 當 credentials 屬性的值設定為 include 時,這意味著瀏覽器將在相同來源和跨域請求中包含憑據,並且始終使用響應中傳送的憑據。
示例 1
在下面的程式中,我們使用 fetch() 函式向給定的 URL 發出請求。在這裡,我們將 credentials 屬性設定為“include”值,這意味著跨域和同域憑據都包含在請求中。在向伺服器傳送請求後,我們現在使用 then() 函式來處理響應。如果遇到錯誤,則 catch() 函式將處理該錯誤。
<!DOCTYPE html> <html> <body> <script> // Retrieving data from the URL using a GET request fetch("https://jsonplaceholder.typicode.com/todos/21", { // Sending both same-origin and // cross-origin credentials credentials: "include" }) // Converting received data into text .then(response => response.text()) .then(myData => { // Display the retrieve Data console.log(myData); }) .catch(err=>{ // Cach error if occur console.log("Found Error:", err) }); </script> <h2>Fetch API Example</h2> </body> </html>
輸出
示例 2
在下面的程式中,我們使用 fetch() 函式向給定的 URL 發出請求。在這裡,我們將 credentials 屬性設定為“same-origin”值,這意味著憑據僅包含在對相同來源或域的請求中。在向伺服器傳送請求後,我們現在使用 then() 函式來處理響應。如果遇到錯誤,則 catch() 函式將處理該錯誤。
<!DOCTYPE html> <html> <body> <script> // Retrieving data from the URL using a GET request fetch("https://jsonplaceholder.typicode.com/todos/21", { // Sending credentials only for the same domain request credentials: "same-origin" }) // Converting received data into text .then(response => response.text()) .then(myData => { // Display the retrieve Data console.log(myData); }) .catch(err=>{ // Cach error if occur console.log("Found Error:", err) }); </script> <h2>Fetch API Example</h2> </body> </html>
輸出
結論
因此,使用憑據,我們可以控制如何在請求中傳送憑據或如何處理響應中返回的憑據。credentials 屬性僅影響跨域請求,對於同域請求,瀏覽器會自動將憑據新增到請求中。在下一篇文章中,我們將學習如何在 Fetch API 中傳送 GET 請求。