withCredentials(簡單說:帶不帶憑證)

一、withCredentials是什么?

? withCredentials?是瀏覽器 XMLHttpRequest 或 Fetch API(以及 axios 等基于它們的庫)中的一個配置項,作用是控制跨域請求時是否攜帶 Cookie、HTTP 認證信息等憑證

用更通俗的方式解釋:

二、核心作用

它就像一個 "通行證開關":

  • 當設為?true?時:跨域請求會帶上當前域名下的 Cookie、HTTP 認證信息(如用戶名密碼)等 "身份憑證"
  • 當設為?false?時(默認值):跨域請求會自動忽略這些憑證,服務器無法識別你的身份

三、適用場景

  1. 跨域登錄狀態維持
    比如你的前端在?a.com,后端接口在?b.com

    • 登錄成功后,后端會在?b.com?域名下種一個 Cookie 作為登錄憑證
    • 后續發請求時,如果?withCredentials: true,瀏覽器會把這個 Cookie 帶給?b.com?服務器,證明 "我已經登錄過"
    • 如果不開啟,服務器會把你當成未登錄用戶
  2. 跨域需要認證的接口
    對于需要 HTTP 基礎認證(賬號密碼)、或依賴 Cookie 做權限校驗的接口,必須開啟這個配置才能正常訪問。

四、注意事項

  1. 后端必須配合
    服務器響應頭必須包含?Access-Control-Allow-Credentials: true,否則即使前端開了?withCredentials,瀏覽器也會拒絕接收響應。

  2. 影響跨域范圍
    當使用?withCredentials?時,后端?Access-Control-Allow-Origin?不能設為?*(通配符),必須指定具體的前端域名(如?https://a.com)。

  3. 同域請求不受影響
    只有跨域請求時這個配置才起作用,同域名下的請求會自動攜帶憑證,無需手動設置。

? ? ? ? 簡單說,withCredentials?就是為了解決 "跨域場景下如何證明我是誰" 的問題,是實現跨域登錄狀態共享的關鍵配置。

五、Cookie是什么時候攜帶上去的

當你設置?withCredentials: true?后,Cookie 的攜帶是自動的,不需要你手動寫任何代碼去附加 Cookie

具體來說:

  1. Cookie 由服務器種下
    比如登錄成功時,服務器會通過響應頭?Set-Cookie: xxx=xxx?把 Cookie 存到瀏覽器里(這一步是服務器做的,前端不用管)。

  2. 瀏覽器自動攜帶
    當你下次用?withCredentials: true?發請求到同一個服務器域名時,瀏覽器會自動找出該域名下的 Cookie,偷偷加到請求頭里發給服務器。

舉個例子:

  • 你登錄?api.xxx.com?后,瀏覽器保存了服務器給的?token=abc123?Cookie
  • 之后你用 axios 發請求:
    axios.post('https://api.xxx.com/data', data, {withCredentials: true  // 關鍵配置
    })
    

  • 瀏覽器會自動在請求頭里加?Cookie: token=abc123,你不用手動寫這行代碼

你只需要保證兩點:

  1. 前端請求時打開?withCredentials: true?開關
  2. 服務器之前已經給瀏覽器種下了該域名的 Cookie

剩下的攜帶工作,瀏覽器會自動完成,不用你手動處理 Cookie 內容。

六、大白話闡述(更好理解)

??withCredentials?就是用來控制 axios 發送請求時,是否帶上?Cookie 信息?的開關。

舉個例子:

  • 當你登錄某個網站后,服務器會給你一個 Cookie 作為 "身份憑證"
  • 之后你再發請求時,如果?withCredentials: trueaxios 就會自動帶上這個 Cookie,服務器就能認出你是誰
  • 如果是?false(默認值),就不會帶 Cookie,服務器可能會把你當成未登錄的新用戶

這個參數主要用在?跨域請求?場景,比如你的前端和后端不在同一個域名下時,需要顯式設置?withCredentials: true?才能讓 Cookie 正常傳遞,否則跨域請求會丟失 Cookie 信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95406.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

window系統使用命令行來安裝OpenSSH服務器或客戶端

可以通過 PowerShell 命令行來安裝,這種方式更直接可靠:以管理員身份打開 PowerShell: 按下 Win S 搜索 “PowerShell”右鍵點擊 “Windows PowerShell”,選擇"以管理員身份運行"安裝 OpenSSH 客戶端: Add-…

vim中常見操作及命令

在 Vim 中為所有行的行首添加相同字符,可以使用以下方法: 方法1:使用 :%s 替換命令(推薦) vim :%s/^/要添加的字符/ 例如要在所有行首添加 #:vim :%s/^/#/ 方法2:使用塊選擇模式(可視…

開發使用mybatis是用混合模式還是全注解模式

在使用 MyBatis 開發項目時,Mapper 接口是為數據庫操作提供最直觀的方法,但在實現方式上,我們有兩種選擇:全注解模式和混合模式。那么,他們有什么區別,應該如何選擇?我們一起來討論一下。一、全…

WS2812燈帶效果設計器上位機

軟件使用方法介紹:bilibili地址 【免寫單片機代碼WS2812燈帶效果設計軟件-嗶哩嗶哩】 https://b23.tv/xFhxMGm

Docker 容器(二)

Docker四、Docker容器數據卷1.數據卷的主要特點2.卷的共享與繼承(1)卷的共享(Sharing)(2) 卷的繼承(Inheritance)3.數據卷運行實例五、Dockerfile1.Dockerfile2. 創建一個名為 myubuntu的自定義鏡像第 1 步…

PCB基礎細節--工藝篇

pcb基礎細節(工藝篇) 1. 孔與焊盤2. PCB各層之間的作用3. 阻抗匹配 3.1. 什么是傳輸線?我們只看特性阻抗,時延以后再說。 在畫原理圖時,我們把電阻,電容,電感是抽象成一個點了。兩邊加一個電壓&…

信創服務器總死機原因及解決辦法

哈嘍,你好啊,我是雷工!最近有個項目使用信創的服務器,總是出現死機的情況,聯系廠家檢查了一下,說是沐創網卡固件較低造成的,讓移除網卡或升級固件嘗試一下。記得5月份按廠家的說法處理過一臺&am…

03_網關ip和端口映射(路由器轉發)操作和原理

網關ip和端口映射(路由器轉發)操作和原理IP 與端口映射配置全指南:2 種方案搞定外網訪問內網一、先搞懂:為什么需要 IP 與端口映射?二、方案一:路由器端口映射(適合有公網 IP,長期穩…

「數據獲取」《安徽建設統計年鑒》(2002-2007)(2004、2006缺失)(獲取方式看綁定的資源)

01、數據簡介《安徽建設統計年鑒》是一部全方位反映安徽省建設事業發展變遷的重要統計資料著作。該書系統收集并精心整理了 2006 年度安徽省城鄉建設領域的核心統計數據,涵蓋城鄉建設固定資產投資、建筑業發展態勢、城鎮建設推進情況等多個關鍵方面,為政…

Python/JS/Go/Java同步學習(第一篇)格式化/隱藏參數一鍋端 四語言輸出流參數宇宙(附源碼/截圖/參數表/避坑指南/老板沉默術)

🤝 免罵聲明: 本文四語言輸出流參數經本蜀黎實戰整理,旨在提供快速參考指南📝因各語言版本迭代及不同系統環境差異,偶爾可能出現整理不全面之處,實屬正常?歡迎理性交流補充,噴子勿噴——畢竟你…

人工智能助力流感疫苗選擇:MIT 團隊推出 VaxSeer 系統

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

使用 qmake 生成 Makefile,Makefile 轉換為 Qt 的 .pro 文件

使用 qmake 生成 Makefile 的完整指南 qmake 是 Qt 提供的構建工具,用于從 .pro 項目文件生成 Makefile。以下是詳細的使用方法: 基本使用方法 1. 從 .pro 文件生成 Makefile bash qmake -o Makefile your_project.pro2. 直接運行 qmake(自動…

利用DeepSeek編寫驗證xlsx格式文件中是否啟用sharedStrings.xml對讀寫效率影響python程序

讓他分別用100*10000個單元格有100、1000、10000個不同的1-200字符長的大寫英文字母字符串測試. 一開始DeepSeek沒有找到啟用sharedStrings.xml的寫xlsx模塊,我自己找了pyxlsbwriter的例子告訴他才改好的。 import os import time import random import string impo…

【C++框架#2】gflags 和 gtest 安裝使用

spdlog 安裝和使用 1. 概述 介紹:spdlog 是一個高性能、超快速、零配置的 C 日志庫,它旨在提供簡潔的 API 和豐富的功能,同時保持高性能的日志記錄。它支持多種輸出目標、格式化選項、線程安全以及異步日志記錄。 github 鏈接:htt…

平衡掌控者-游戲數值戰斗設計

一、有效生命值1、計算公式有效生命生命值/(1-傷害減免率)/(1-閃避率)2、前搖和后搖對數值來說,戰斗由兩大模塊組成,一個是戰斗公式生效前的戰斗攻擊流程,一個是戰斗公式與自身流程。比如說&…

使用DataLoader加載本地數據 食物分類案例

目錄 一.食物分類案例 1..整合訓練集測試集文檔 2.導入相關的庫 3.設置圖片數據的格式轉換 3.數據處理 4.數據打包 5.定義卷積神經網絡 6.創建模型 7.訓練和測試方法定義 8.損失函數和優化器 9.訓練模型,測試準確率 10.測試模型 之前我們DataLoader加載…

從零開始的python學習——函數(2)

? ? ? ? ? づ?ど 🎉 歡迎點贊支持🎉 個人主頁:勵志不掉頭發的內向程序員; 專欄主頁:python學習專欄; 文章目錄 前言 一、變量作用域 二、函數執行過程 三、鏈式調用 四、嵌套調用 五、函數遞歸 六、…

RAG 的完整流程是怎么樣的?

RAG(檢索增強生成)的完整流程可分為5個核心階段:數據準備:清洗文檔、分塊處理(如PDF轉文本切片);向量化:使用嵌入模型(如BERT、BGE)將文本轉為向量&#xff1…

研發文檔版本混亂的根本原因是什么,怎么辦

研發文檔版本混亂的根本原因通常包括缺乏統一的版本控制制度、團隊協作不暢、文檔管理工具使用不當以及項目需求頻繁變化等因素。這些問題使得研發團隊在日常工作中容易出現文檔版本混亂的情況,導致信息的不一致性、溝通不暢以及開發進度的延誤。為了解決這一問題&a…

ChartView的基本使用

Qt ChartView(準確類名 QChartView)是 Qt Charts 模塊里最常用的圖表顯示控件。一句話概括:“它把 QChart 畫出來,并自帶縮放、平移、抗鋸齒等交互能力”。QML ChartView 簡介(一句話先記住:ChartView 是 Q…