ChatGPT:SpringBoot解決跨域問題方法-手動設置請求頭

ChatGPT:SpringBoot解決跨域問題方法-手動設置請求頭



在這里插入圖片描述

這里的設置響應頭是為了發送請求方還是接收請求方

設置響應頭是為了發送請求方。具體來說,添加 Access-Control-Allow-Origin 頭部是為了告訴瀏覽器,哪些域名可以訪問資源。當設置為 * 時,表示允許所有域名訪問。這個設置主要用于解決跨域資源共享(CORS)問題。

代碼示例解釋:

@RequestMapping("/index")
public String index(HttpServletResponse response) {response.addHeader("Access-Allow-Control-Origin", "*");return "index";
}

在這個代碼中,當客戶端(如瀏覽器)訪問 /index 端點時,服務器會在響應頭中添加 Access-Allow-Control-Origin: *,表示允許任何域名訪問該資源。這樣做的目的是讓瀏覽器知道它可以接受該響應,即使請求來自于不同的域名。

需要注意的是,這種方式雖然方便,但使用 * 允許所有域名訪問可能存在安全隱患,通常在生產環境中會指定具體的域名,而不是使用 *


所以防止跨域是誰做出的舉動呢

防止跨域請求的措施主要是由瀏覽器做出的。具體來說,瀏覽器會根據同源策略(Same-Origin Policy)來阻止從一個域名向另一個域名發起的未經授權的請求。

同源策略

同源策略是一種重要的安全機制,它阻止了一個源(域名、協議和端口)下的文檔或腳本從另一個源請求資源。這意味著,只有當請求的資源與當前文檔的源相同時,瀏覽器才會允許請求通過。

跨域資源共享 (CORS)

跨域資源共享(CORS, Cross-Origin Resource Sharing)是由服務器來決定是否允許跨域請求的一種機制。服務器通過設置適當的響應頭來告訴瀏覽器,哪些源可以訪問其資源。最常見的響應頭是 Access-Control-Allow-Origin

流程示意
  1. 瀏覽器發起請求:當瀏覽器檢測到一個跨域請求時(如 AJAX 請求),它會首先發送一個預檢請求(OPTIONS 請求)到服務器,詢問服務器是否允許跨域請求。
  2. 服務器響應預檢請求:服務器響應預檢請求,并在響應頭中包括 Access-Control-Allow-Origin 和其他 CORS 相關頭部信息。
  3. 瀏覽器根據響應決定是否發出實際請求:如果服務器允許跨域請求,瀏覽器會繼續發送實際的請求。如果服務器不允許,瀏覽器會阻止請求,并向客戶端返回錯誤。
代碼示例

在你的代碼中,服務器通過設置響應頭來允許跨域請求:

@RequestMapping("/index")
public String index(HttpServletResponse response) {response.addHeader("Access-Control-Allow-Origin", "*");return "index";
}

當瀏覽器接收到這個響應頭時,它就知道可以接受該響應,即使請求來自于不同的源。

總結

防止跨域請求的主要措施是由瀏覽器實施的,同源策略確保了一個源無法未經授權訪問另一個源的資源。服務器通過設置適當的 CORS 響應頭,可以允許合法的跨域請求。


可是按下f12進行調試并沒有看到有預檢請求啊

并不是所有的跨域請求都會觸發預檢請求(OPTIONS 請求)。預檢請求通常在以下情況中觸發:

  1. 使用的 HTTP 方法不是 GET、POST 或 HEAD。
  2. 使用的自定義頭部字段(如 X-Custom-Header)。
  3. 請求的內容類型(Content-Type)不是以下三種之一:
    • application/x-www-form-urlencoded
    • multipart/form-data
    • text/plain

如果你的跨域請求是一個簡單請求(Simple Request),那么它不會觸發預檢請求。簡單請求包括以下幾種情況:

  • 使用 GET、POST 或 HEAD 方法。
  • 不包含自定義頭部。
  • 請求的內容類型是上述三種之一。
示例說明

假設你在使用 JavaScript 發起一個跨域請求:

fetch('http://example.com/index', {method: 'GET',headers: {'Content-Type': 'application/json'}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

這個請求是一個簡單請求,不會觸發預檢請求。瀏覽器會直接發出 GET 請求,并根據服務器的響應頭判斷是否允許跨域。

如何查看請求頭

在瀏覽器的開發者工具中,可以按以下步驟查看請求和響應頭:

  1. F12 打開開發者工具。
  2. 轉到“Network”(網絡)選項卡。
  3. 發起跨域請求。
  4. 在請求列表中找到對應的請求,點擊它。
  5. 在右側面板中查看“Headers”(頭部)信息,包括請求頭和響應頭。
檢查預檢請求

如果你希望確認是否有預檢請求被發出,可以嘗試以下方法:

  1. 修改請求方法為非簡單請求方法(如 PUT、DELETE 等)。
  2. 添加自定義頭部字段(如 X-Custom-Header)。
  3. 修改請求的 Content-Type 為非簡單請求的類型(如 application/json)。

例如:

fetch('http://example.com/index', {method: 'POST',headers: {'Content-Type': 'application/json','X-Custom-Header': 'value'},body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

此時,瀏覽器應該會先發出一個預檢請求(OPTIONS),你可以在開發者工具的網絡選項卡中看到這個預檢請求。


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

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

相關文章

Java求自然常數e的近似值(課堂實例1)

??引言🎃🎃 ?點關注編程夢想家(大學生版)-CSDN博客不迷路~~~~~~? 自然常數 𝑒e 是數學中一個非常重要的常數,約等于 2.71828,它在自然對數、復合利息計算等領域有著廣泛的應用。本文將介紹如…

自動批量將阿里云盤文件發布成WordPress文章腳本源碼(以RiPro主題為例含付費信息下載地址SEO等自動設置)源碼

背景 很多資源下載站,付費資源下載站,付費內容查看等都可以用WordPress站點發布內容,這些站點一般會基于一個主題,付費信息作為文章附屬的信息發布,底層存儲在WP表里,比如日主題,子比主題等。 …

掌握IPython的`%%debug`:深入交互式調試的藝術

IPython是一個功能豐富的交互式Python解釋器,它為Python開發者提供了許多便捷的功能,其中之一就是%%debug魔法命令。%%debug是IPython提供的一種快速進入調試模式的方法,它允許用戶在代碼執行出錯時立即開始調試,而無需單獨啟動調…

Apache Seata tcc 模塊源碼分析

本文來自 Apache Seata官方文檔,歡迎訪問官網,查看更多深度文章。 本文來自 Apache Seata官方文檔,歡迎訪問官網,查看更多深度文章。 一 .導讀 spring 模塊分析中講到,Seata 的 spring 模塊會對涉及到分布式業務的 b…

《夢醒蝶飛:釋放Excel函數與公式的力量》9.2 FV函數

9.2 FV函數 FV函數是Excel中用于計算投資或貸款在若干期后的未來值的函數。它是一個非常實用的財務函數,能夠幫助我們快速計算投資的最終價值或貸款的期末余額。 9.2.1 函數簡介 FV函數用于計算基于定期固定支付和固定利率的投資或貸款的未來值。未來值是指在一定…

cs224n作業3 代碼及運行結果

代碼里要求用pytorch1.0.0版本,其實不用也可以的。 【刪掉run.py里的assert(torch.version “1.0.0”)即可】 代碼里面也有提示讓你實現什么,弄懂代碼什么意思基本就可以了,看多了感覺大框架都大差不差。多看多練慢慢來,加油&am…

中英雙語介紹美國的州:阿肯色州(Arkansas)

中文版 阿肯色州簡介 阿肯色州(Arkansas)位于美國南部,以其多樣的自然景觀、豐富的文化遺產和不斷發展的經濟而聞名。以下是對阿肯色州的詳細介紹,包括其地理位置、人口、經濟、教育、文化和主要城市。 地理位置 阿肯色州東臨…

文件、文本閱讀與重定向、路徑與理解指令——linux指令學習(一)

前言:本節內容標題雖然為指令,但是并不只是講指令, 更多的是和指令相關的一些原理性的東西。 如果友友只想要查一查某個指令的用法, 很抱歉, 本節不是那種帶有字典性質的文章。但是如果友友是想要來學習的,…

PD虛擬機怎么聯網?PD虛擬機安裝Win11無法上網 pd虛擬機連不上網怎么解決 mac安裝windows虛擬機教程

PD虛擬機既可以聯網使用,也可以單機使用。如需將PD虛擬機聯網,可以共享Mac原生系統的網絡,其使用體驗與真實系統無異。本文會詳細講解PD虛擬機如何聯網,并會進一步解決PD虛擬機安裝Win10無法上網的問題。 如果有網絡相關問題的小伙…

游戲服務器搭建選VPS還是專用服務器?

游戲服務器搭建選VPS,VPS能夠提供控制、性能和穩定性。它不僅僅是讓游戲保持活力。它有助于減少延遲問題,增強您的游戲體驗。 想象一下:你正沉浸在一場游戲中。 勝利在望。突然,屏幕卡住——服務器延遲。 很崩潰,對…

C語言實現【程序設計與實踐】實驗三:自動售貨機

聲明:著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 附上c版http://t.csdnimg.cn/BbDSL https://blog.csdn.net/As_sBomb/article/details/105485940 實驗三:自動售貨機 題目: 圖所示為簡易自動售貨…

1493. 刪掉一個元素以后全為 1 的最長子數組

1493. 刪掉一個元素以后全為 1 的最長子數組 題目鏈接&#xff1a;1493. 刪掉一個元素以后全為 1 的最長子數組 代碼如下&#xff1a; class Solution { public://滑動窗口int longestSubarray(vector<int>& nums){int res 0;int count 0;//記錄碰到0的個數int …

【MYSQL】事務隔離級別以及InnerDB底層實現

事務隔離級別 讀未提交&#xff08;Read Uncommitted&#xff09; 允許事務讀取其他事務未提交的數據&#xff0c;可能會導致臟讀。 讀已提交&#xff08;Read Committed&#xff09; 一個事務只能看見已經提交的事務所做的更改&#xff0c;可以避免臟讀&#xff0c;但可能…

win7系統快速安裝python

下載安裝包 建議選擇python3.8左右的&#xff0c;我下載的是3.7.8&#xff0c;最新版本的pythonwin7可能不支持 python網址 下拉尋找 安裝python 1.雙擊安裝包 更換完地址選擇安裝(install) 安裝完成后點擊close即可 測試是否安裝成功 1.winr快捷鍵打開黑窗口輸入cmd …

idea創建的maven項目pom文件引入的坐標報紅原因

如下所示 我們在引入某些依賴坐標的時候&#xff0c;即使點擊了右上角的mavne刷新之后還是報紅。 其實這是正常現象&#xff0c;實際上是我們的本地倉庫當中沒有這些依賴坐標&#xff0c;而idea就會通過報紅來標記這些依賴來說明在我們的本地倉庫是不存在的。 那有的同學就會…

【HICE】dns正向解析

1.編輯倉庫 2.掛載 3.下載軟件包 4.編輯named.conf 5.編輯named.haha 6.重啟服務 7.驗證本地域名是否解析

1116. 打印零與奇偶數

題目描述 現有函數 printNumber 可以用一個整數參數調用&#xff0c;并輸出該整數到控制臺。 例如&#xff0c;調用 printNumber(7) 將會輸出 7 到控制臺。 給你類 ZeroEvenOdd 的一個實例&#xff0c;該類中有三個函數&#xff1a;zero、even 和 odd 。ZeroEvenOdd 的相同實…

六、快速啟動框架:SpringBoot3實戰-個人版

六、快速啟動框架&#xff1a;SpringBoot3實戰 文章目錄 六、快速啟動框架&#xff1a;SpringBoot3實戰一、SpringBoot3介紹1.1 SpringBoot3簡介1.2 系統要求1.3 快速入門1.4 入門總結回顧復習 二、SpringBoot3配置文件2.1 統一配置管理概述2.2 屬性配置文件使用2.3 YAML配置文…

短劇app開發搭建需要哪些資質證件?

短劇APP需要辦理的資質包括增值電信業務經營許可證&#xff08;ICP&#xff09;、網絡文化經營許可證&#xff08;文網文&#xff09;、廣播電視節目制作經營許可證&#xff0c;以及軟件著作權&#xff08;軟著&#xff09;。 增值電信業務經營許可證&#xff08;ICP&#xff…

ODOO17的郵件機制-系統自動推送修改密碼的郵件

用戶收到被要求重置密碼的郵件&#xff1a; 我們來分析一下ODOO此郵件的工作機制&#xff1a; 1、郵件模板定義 2、渲染模板的函數&#xff1a; 3、調用此函數的機制&#xff1a; 當用戶移除或增加了信任的設備&#xff08;如電腦、手機端等&#xff09;&#xff0c;系統會自…