最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的跨域和@CrossOrigin注解的作用詳解

 更新時間:2023年12月05日 08:32:43   作者:鐵漢柔情li  
這篇文章主要介紹了Java中的跨域和@CrossOrigin注解的作用詳解,跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制,需要的朋友可以參考下

什么是跨域

在Controller中看到@CrossOrigin ,這是什么?有什么用?為什么要用?

@CrossOrigin是用來處理跨域請求的注解

先來說一下什么是跨域:

(站在巨人的肩膀上)

跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。

所謂同源是指,域名,協(xié)議,端口均相同,不明白沒關(guān)系,舉個栗子:

  • //www.123.com/index.html 調(diào)用 //www.123.com/server.PHP (非跨域)
  • //www.123.com/index.html 調(diào)用 //www.456.com/server.php (主域名不同:123/456,跨域)
  • //abc.123.com/index.html 調(diào)用 //def.123.com/server.php(子域名不同:abc/def,跨域)
  • //www.123.com:8080/index.html調(diào)用 //www.123.com:8081/server.php(端口不同:8080/8081,跨域)
  • //www.123.com/index.html 調(diào)用 https://www.123.com/server.php(協(xié)議不同:http/https,跨域)

請注意:localhost和127.0.0.1雖然都指向本機,但也屬于跨域。

瀏覽器執(zhí)行javascript腳本時,會檢查這個腳本屬于哪個頁面,如果不是同源頁面,就不會被執(zhí)行。

當域名www.abc.com下的js代碼去訪問www.def.com域名下的資源,就會受到限制。

@CrossOrigin可以處理跨域請求,讓你能訪問不是一個域的文件。

跨域(CORS)支持

Spring Framework 4.2 GA為CORS提供了第一類支持

使您比通常的基于過濾器的解決方案更容易和更強大地配置它

所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin

使用方法簡介說明

controller中配置CORS

我們可在@RequestMapping注解的上面添加一個@CrossOrigin注解

 則可啟用CORS(默認情況下,@CrossOrigin允許在@RequestMapping注解中指定的所有源和HTTP方法)

例:

@RestController
public class TestController {
    @CrossOrigin
    @PostMapping("/test/addRecord")
    public CommonResult<Integer> add(@RequestBody TestController oneRecord) {
       // ...
    }
    @GetMapping("/test/checkRecord")
    public CommonResult<TestController> checkRecord(@RequestParam Integer recordId) {
        // ...
    }
}

@CrossOrigin注解是干什么用的

@CrossOrigin是一個Java注解,用于指示瀏覽器允許跨域請求資源。在Web應(yīng)用程序中,如果JavaScript代碼試圖從一個域名獲取來自不同域名的資源,這將會觸發(fā)瀏覽器的同源策略,從而導(dǎo)致瀏覽器阻止跨域請求。使用@CrossOrigin注解可以允許瀏覽器繞過同源策略,從而允許跨域請求。

@CrossOrigin注解可以用于類級別或方法級別,如果用于類級別,將適用于整個類中的所有方法。它接受一些參數(shù),包括:

  • origins:指示允許跨域請求的來源。默認情況下,它是"*",表示允許來自任何來源的跨域請求。
  • methods:指示允許的HTTP方法。默認情況下,它包括GET、HEAD和POST。
  • maxAge:指示瀏覽器可以緩存預(yù)檢請求的時間(以秒為單位)。
  • allowedHeaders:指示允許的請求頭。
  • exposedHeaders:指示可以訪問響應(yīng)頭的列表。

總之,使用@CrossOrigin注解可以解決跨域請求的問題,使得Web應(yīng)用程序能夠更靈活地使用跨域資源。

優(yōu)缺點分析

使用@CrossOrigin注解可以解決跨域請求的問題,從而使Web應(yīng)用程序能夠更靈活地使用跨域資源。下面是@CrossOrigin注解的一些優(yōu)缺點:

優(yōu)點:

使得Web應(yīng)用程序能夠更靈活地使用跨域資源,提高了開發(fā)效率。允許跨域請求,使得多個域之間的交互更加便利??梢钥刂圃试S的請求來源、請求方法、請求頭等,從而增強了安全性。

缺點:

允許跨域請求可能會導(dǎo)致一些安全風(fēng)險,例如跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)。使用@CrossOrigin注解可能會使代碼更難以維護和測試,因為它可能會增加代碼的復(fù)雜度。在處理跨域請求時,可能會出現(xiàn)性能問題,因為瀏覽器需要進行額外的預(yù)檢請求。

總之,@CrossOrigin注解的使用需要在安全性和開發(fā)效率之間做出權(quán)衡,開發(fā)人員需要根據(jù)具體情況進行選擇和配置。

其他推薦解決跨域方法的選擇

Java處理跨域問題的方法有很多種,下面列舉幾種常用的方法:

  • 使用@CrossOrigin注解:如前面所述,可以使用@CrossOrigin注解來允許跨域請求。
  • 使用Filter過濾器:使用Filter過濾器可以攔截所有請求并添加響應(yīng)頭,從而允許跨域請求。在Filter過濾器中,可以設(shè)置允許的請求來源、請求方法、請求頭等。
  • 使用代理服務(wù)器:使用代理服務(wù)器可以將跨域請求發(fā)送到代理服務(wù)器,代理服務(wù)器再將請求發(fā)送到目標服務(wù)器,并將響應(yīng)返回給瀏覽器。在這個過程中,瀏覽器只與代理服務(wù)器通信,避免了跨域問題。
  • 使用JSONP技術(shù):JSONP是一種在客戶端使用的跨域技術(shù),它允許在不受同源策略限制的情況下獲取跨域資源。在Java中,可以通過返回一個JavaScript函數(shù)調(diào)用來實現(xiàn)JSONP。
  • 使用WebSocket協(xié)議:WebSocket是一種新型的協(xié)議,可以在瀏覽器和服務(wù)器之間建立雙向通信的連接。使用WebSocket協(xié)議可以避免跨域問題,并且可以實現(xiàn)實時通信等功能。

總之,Java處理跨域問題的方法有很多種,開發(fā)人員需要根據(jù)具體情況選擇合適的方法。在使用這些方法時,需要注意安全性和性能等方面的問題。

到此這篇關(guān)于Java中的跨域和@CrossOrigin注解的作用詳解的文章就介紹到這了,更多相關(guān)跨域和@CrossOrigin注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程阻塞與喚醒代碼示例

    Java多線程阻塞與喚醒代碼示例

    本文主要向大家分享了Java多線程中的阻塞與喚醒的相關(guān)內(nèi)容,通過這篇文章大家可以大致了解到進入線程阻塞狀態(tài)和可執(zhí)行狀態(tài)的方法,需要的朋友可以了解下。
    2017-09-09
  • 如何實現(xiàn)java執(zhí)行kettle并傳參數(shù)

    如何實現(xiàn)java執(zhí)行kettle并傳參數(shù)

    文章主要介紹了在審批成功后如何使用Kettle傳遞批次號參數(shù)并執(zhí)行KTR文件,同時,提到了所需的主要POM依賴,并強調(diào)了個人經(jīng)驗的價值,鼓勵大家參考和使用
    2025-01-01
  • Java中Future和FutureTask的示例詳解及使用

    Java中Future和FutureTask的示例詳解及使用

    Java中的Future和FutureTask通常和線程池搭配使用,用來獲取線程池返回執(zhí)行后的返回值,下面這篇文章主要給大家介紹了關(guān)于Java中Future和FutureTask使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • JUC中Future及CompletableFuture的用法與說明

    JUC中Future及CompletableFuture的用法與說明

    本文介紹了Future接口及其實現(xiàn)類FutureTask的使用方法,指出了其阻塞和CPU空轉(zhuǎn)問題,為了解決這些問題,介紹了CompletableFuture的異步任務(wù)編排,可以自動回調(diào)異步任務(wù)結(jié)束時的方法,解決了阻塞和輪詢問題,同時提供了鏈式調(diào)用、函數(shù)式編程等等提高編程效率
    2026-04-04
  • Reactive反應(yīng)式編程及使用介紹

    Reactive反應(yīng)式編程及使用介紹

    這篇文章主要介紹了為什使用Reactive反應(yīng)式編程的原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步,早日升職加薪
    2022-02-02
  • Spring定時任務(wù)并行(異步)處理方式

    Spring定時任務(wù)并行(異步)處理方式

    這篇文章主要介紹了Spring定時任務(wù)并行(異步)處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • springboot集成Mybatis的詳細教程

    springboot集成Mybatis的詳細教程

    今天給大家?guī)淼倪€是關(guān)于springboot的相關(guān)知識,文章圍繞著springboot集成Mybatis的詳細教程展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Ribbon從入門到精通實戰(zhàn)案例演示

    Ribbon從入門到精通實戰(zhàn)案例演示

    Ribbon是Netflix開源的客戶端負載均衡工具,用于微服務(wù)通信,動態(tài)獲取服務(wù)實例并應(yīng)用輪詢、隨機、權(quán)重響應(yīng)時間等策略,下面通過實戰(zhàn)案例給大家解析Ribbon的核心組件與工作原理,感興趣的朋友一起看看吧
    2025-08-08
  • 基于jdk1.8的Java源碼詳解 Integer

    基于jdk1.8的Java源碼詳解 Integer

    這篇文章主要介紹了基于jdk1.8的Java源碼詳解 Integer,Integer是int的Warpper類,是面向?qū)ο蟮募碠OP的對象類型,,需要的朋友可以參考下
    2019-06-06
  • Maven生成及安裝jar包到本地倉庫的方法

    Maven生成及安裝jar包到本地倉庫的方法

    這篇文章主要介紹了Maven生成及安裝jar包到本地倉庫的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

秦皇岛市| 金乡县| 玉树县| 那坡县| 井研县| 平顶山市| 石台县| 通许县| 湟中县| 昆明市| 谷城县| 舟曲县| 通城县| 合阳县| 桃江县| 梁河县| 呼玛县| 鹿邑县| 荆门市| 驻马店市| 涪陵区| 甘肃省| 阿尔山市| 靖宇县| 印江| 永寿县| 香格里拉县| 疏勒县| 宾川县| 汉寿县| 车险| 民丰县| 龙陵县| 沂源县| 鄂州市| 莆田市| 民和| 久治县| 双辽市| 潞西市| 孟村|