用Postman調試跨域問題


前言

  跨域問題我已經遇到許多次了,每次都是搞得滿頭問號,這次要把這個問題徹底梳理一下,弄明白問題的根源,以后就不會再手忙腳亂了。

  跨域問題,大佬的這篇文章《SpringBoot配置Cors解決跨域請求問題》原理及解決方法寫的非常好,強烈推薦,我下面的內容主要是講后端開發如何進行調試。

  另外,了解一下 Http 的內容協商機制,也有助於我們解決跨域問題,推薦下這篇文章《HTTP 協議中 Vary 的一些研究

跨域問題

  首先,跨域問題本質是因為瀏覽器的同源策略導致的。

  1. 瀏覽器會為請求頭添加 Origin、Host 兩個字段,分別代表請求來源站點、請求的目標站點(域名或者ip+端口)。

  2. 服務器收到請求后,根據 Origin 和 Host 兩個字段判斷是否是跨域請求。

  3. 如果允許,則在 HTTP 頭信息中添加 Access-Control-Allow-Origin 字段,並返回正確的結果

  4. 如果不 允許,則不在 HTTP 頭信息中添加 Access-Control-Allow-Origin 字段 

用postman復現跨域問題

  1. Postman 在請求Header上,並不會主動添加 Origin 字段,需要我們手動添加,如圖:

 

   2. postman不管是否跨域,返回的都是200結果,因此不能用是否返回值判斷服務器是否允許跨域,而應該使用 response 的 Header 字段中是否存在允許跨域的字段來判斷是否允許跨域。

   相關字段包括:

   Access-Control-Allow-Origin   是否允許該請求訪問

   Access-Control-Expose-Headers   可選,可以讓用戶拿到的字段。有幾個字段無論設置與否都可以拿到的,包括:Cache-ControlContent-LanguageContent-TypeExpiresLast-ModifiedPragma

   Access-Control-Allow-Credentials: 可選,用戶是否可以發送、處理 cookie

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM