亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot解決使用localhost或127.0.01模擬CORS失效

 更新時(shí)間:2024年07月30日 09:49:29   作者:成為大佬先禿頭  
CORS允許不同源的網(wǎng)頁(yè)請(qǐng)求訪問(wèn)另一個(gè)源服務(wù)器上的某些資源,本文主要介紹了springboot解決使用localhost或127.0.01模擬CORS失效,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

CORS (Cross-Origin Resource Sharing) 指的是一種機(jī)制,它允許不同源的網(wǎng)頁(yè)請(qǐng)求訪問(wèn)另一個(gè)源服務(wù)器上的某些資源。通常情況下,如果 JavaScript 代碼在一個(gè)源中發(fā)起了 AJAX 請(qǐng)求,那么該請(qǐng)求只能訪問(wèn)同源的資源,而不能訪問(wèn)其他源的資源。這是由于瀏覽器的同源策略所限制的。

CORSCross-Origin Resource Sharing)規(guī)范將跨域請(qǐng)求分為簡(jiǎn)單請(qǐng)求和復(fù)雜請(qǐng)求兩種類型。

  • 簡(jiǎn)單請(qǐng)求(Simple Request):
  • 請(qǐng)求方法限制為 GET、POST、HEAD
  • 允許的請(qǐng)求頭字段為:Accept、Accept-Language、Content-Language、Content-Type(僅限于以下幾個(gè)值:application/x-www-form-urlencoded、multipart/form-data、text/plain)。
  • 不允許使用自定義的請(qǐng)求頭字段。

簡(jiǎn)單請(qǐng)求滿足上述要求時(shí),瀏覽器會(huì)自動(dòng)發(fā)送跨域請(qǐng)求,并且不會(huì)在正式請(qǐng)求之前發(fā)送預(yù)檢請(qǐng)求(OPTIONS 請(qǐng)求)。服務(wù)器只需在響應(yīng)中添加 Access-Control-Allow-Origin 頭字段,指定允許訪問(wèn)的來(lái)源,即可完成跨域訪問(wèn)。

  • 復(fù)雜請(qǐng)求(Preflighted Request):
  • 使用非簡(jiǎn)單請(qǐng)求方法(如PUT、DELETE等)。
  • 使用自定義的請(qǐng)求頭字段。
  • Content-Type 的值為 application/json 之類的復(fù)雜 MIME 類型。

復(fù)雜請(qǐng)求不滿足簡(jiǎn)單請(qǐng)求的要求時(shí),瀏覽器會(huì)先發(fā)送預(yù)檢請(qǐng)求(OPTIONS 請(qǐng)求),以征詢服務(wù)器是否允許實(shí)際請(qǐng)求。服務(wù)器需要在預(yù)檢請(qǐng)求和實(shí)際請(qǐng)求的響應(yīng)中添加一系列的頭字段,包括 Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers 等,來(lái)指定允許訪問(wèn)的來(lái)源、允許使用的方法、允許使用的請(qǐng)求頭字段等信息。

問(wèn)題發(fā)現(xiàn)

在學(xué)習(xí)spring內(nèi)容時(shí),有介紹CORS,按照示例代碼編寫后,運(yùn)行發(fā)現(xiàn)能請(qǐng)求成功,操作如下:

示例代碼:

@Controller
public class MyController {
    @GetMapping("/index")
    @CrossOrigin(origins = "http://127.0.0.1")
    public ResponseEntity<String> index(){
        return ResponseEntity.ok().body("index");
    }
}

請(qǐng)求:

在這里插入圖片描述

使用127.0.0.1,發(fā)現(xiàn)能正常返回接口,按照網(wǎng)上說(shuō)法,localhost127.0.0.1不屬于同源。

同源是指在以下三個(gè)方面完全相同的情況下,兩個(gè)網(wǎng)頁(yè)才被認(rèn)為是同源的:
協(xié)議(Protocol):兩個(gè)網(wǎng)頁(yè)的協(xié)議必須相同,如都是使用 HTTP 或 HTTPS。
域名(Domain):兩個(gè)網(wǎng)頁(yè)的域名必須相同,包括子域名。例如,www.example.com 和 api.example.com 是不同的域名。
端口號(hào)(Port):如果指定了端口號(hào),則兩個(gè)網(wǎng)頁(yè)的端口號(hào)必須相同。如果沒(méi)有指定端口號(hào),默認(rèn)使用 80(HTTP)或 443(HTTPS)。
只有當(dāng)上述三個(gè)條件都滿足時(shí),兩個(gè)網(wǎng)頁(yè)才被認(rèn)為是同源的,瀏覽器會(huì)將它們視為同一個(gè)應(yīng)用程序,允許它們之間進(jìn)行相互通信和資源共享。

跨域是指在不滿足同源策略的情況下,從一個(gè)域名的網(wǎng)頁(yè)向另一個(gè)域名的網(wǎng)頁(yè)發(fā)起請(qǐng)求。由于瀏覽器的安全策略限制,跨域請(qǐng)求通常是被禁止的,除非目標(biāo)服務(wù)器明確允許跨域請(qǐng)求。在跨域請(qǐng)求中,瀏覽器會(huì)發(fā)送預(yù)檢請(qǐng)求(OPTIONS 請(qǐng)求),以確定是否允許跨域訪問(wèn)。

問(wèn)題解決

在使用 Ajax 發(fā)起跨域請(qǐng)求時(shí),瀏覽器會(huì)在請(qǐng)求頭中添加 Origin 字段。這個(gè)字段表示該請(qǐng)求的來(lái)源(即當(dāng)前頁(yè)面的域名)。服務(wù)器可以通過(guò)檢查這個(gè)字段來(lái)判斷是否允許該請(qǐng)求進(jìn)行跨域訪問(wèn)。

例如,如果你的網(wǎng)頁(yè)位于 http://example.com,而 Ajax 請(qǐng)求的目標(biāo)是 http://api.example.com/data,則請(qǐng)求頭中會(huì)包含 Origin: http://example.com

所以問(wèn)題的根本是,要在headers請(qǐng)求頭中添加Origin 字段(localhost127.0.0.1同源,改為不同,不用過(guò)多糾結(jié),底層可能做了請(qǐng)求地址和請(qǐng)求頭的判斷,生產(chǎn)環(huán)境也不用這玩意當(dāng)域名的):

在這里插入圖片描述

問(wèn)題解決。

到此這篇關(guān)于springboot解決使用localhost或127.0.01模擬CORS失效的文章就介紹到這了,更多相關(guān)springboot CORS失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java線程中的ThreadLocal類解讀

    Java線程中的ThreadLocal類解讀

    這篇文章主要介紹了Java線程中的ThreadLocal類解讀,ThreadLocal是一個(gè)泛型類,作用是實(shí)現(xiàn)線程隔離,ThreadLocal類型的變量,在每個(gè)線程中都會(huì)對(duì)應(yīng)一個(gè)具體對(duì)象,對(duì)象類型需要在聲明ThreadLocal變量時(shí)指定,需要的朋友可以參考下
    2023-11-11
  • Java生成唯一ID的三種方法總結(jié)

    Java生成唯一ID的三種方法總結(jié)

    單機(jī)環(huán)境下,可以使用AtomicLong來(lái)生成唯一ID;而在需要非純數(shù)字形式的場(chǎng)景中,可以通過(guò)UUID結(jié)合哈希函數(shù)如MD5或SHA-1轉(zhuǎn)換成數(shù)字,但需注意哈希碰撞的低概率風(fēng)險(xiǎn);對(duì)于分布式系統(tǒng),模擬Snowflake算法是一種復(fù)雜但有效的方法,每種方法都有其適用場(chǎng)景和潛在問(wèn)題
    2024-09-09
  • JAVA8 stream中三個(gè)參數(shù)的reduce方法對(duì)List進(jìn)行分組統(tǒng)計(jì)操作

    JAVA8 stream中三個(gè)參數(shù)的reduce方法對(duì)List進(jìn)行分組統(tǒng)計(jì)操作

    這篇文章主要介紹了JAVA8 stream中三個(gè)參數(shù)的reduce方法對(duì)List進(jìn)行分組統(tǒng)計(jì)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java多線程之鎖學(xué)習(xí)(增強(qiáng)版)

    Java多線程之鎖學(xué)習(xí)(增強(qiáng)版)

    這篇文章主要為大家詳細(xì)介紹了Java多線程中鎖的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們了解線程有一定幫助,需要的可以參考一下
    2023-02-02
  • Kotlin與Java 泛型缺陷和應(yīng)用場(chǎng)景詳解

    Kotlin與Java 泛型缺陷和應(yīng)用場(chǎng)景詳解

    這篇文章主要為大家介紹了Kotlin與Java 泛型缺陷和應(yīng)用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Java Serializable和Parcelable詳解及實(shí)例代碼

    Java Serializable和Parcelable詳解及實(shí)例代碼

    這篇文章主要介紹了Java Serializable和Parcelable詳解,并附實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • ToStringBuilder類的一些心得

    ToStringBuilder類的一些心得

    ToStringBuilder類的一些心得,需要的朋友可以參考一下
    2013-02-02
  • javaCV開(kāi)發(fā)詳解之推流器和錄制器的實(shí)現(xiàn)

    javaCV開(kāi)發(fā)詳解之推流器和錄制器的實(shí)現(xiàn)

    這篇文章主要介紹了javaCV開(kāi)發(fā)詳解之推流器和錄制器實(shí)現(xiàn),對(duì)JavaCV感興趣的同學(xué),可以參考下
    2021-04-04
  • Spring security權(quán)限配置與使用大全

    Spring security權(quán)限配置與使用大全

    Spring Security 本質(zhì)上是借助一系列的 Servlet Filter來(lái)提供各種安全性功能,但這并不需要我們手動(dòng)去添加或者創(chuàng)建多個(gè)Filter,本文重點(diǎn)給大家介紹spring-security的配置與使用及實(shí)現(xiàn)方式,感興趣的朋友一起看看吧
    2021-09-09
  • SpringBoot Shiro授權(quán)實(shí)現(xiàn)過(guò)程解析

    SpringBoot Shiro授權(quán)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了SpringBoot Shiro授權(quán)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論