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

Java中跨域問題解決的幾種方式舉例詳解

 更新時間:2024年12月25日 11:13:05   作者:A_aspectJ項目開發(fā)  
這篇文章主要介紹了前后端分離項目中跨域問題的解決方法,包括設(shè)置響應(yīng)頭信息、使用iframe、WebSocket、HttpServletResponse添加頭信息以及通過配置類等多種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在前后端分離項目中,經(jīng)常會遇到跨域問題,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下,一起來看看吧~

什么是跨域

當(dāng)一個請求的url的協(xié)議、域名、端口任意一個與當(dāng)前頁面的url不同即為跨域。

比如 a頁面想獲取b頁面的資源,a與b頁面的協(xié)議、域名或端口號不同,進行的訪問行為都是跨域,由于瀏覽器的同源策略,會限制跨域請求資源。

同源策略由 Netscape 公司引入瀏覽器。目前,所有瀏覽器都實行這個政策。最初,它的含義是指,A網(wǎng)頁設(shè)置的 Cookie,B網(wǎng)頁不能打開,除非這兩個網(wǎng)頁"同源"。所謂"同源"指的是"三個相同":

  • 協(xié)議相同
  • 域名相同
  • 端口相同

同源策略確保一個應(yīng)用中的資源只能被本應(yīng)用的資源訪問。

非同源限制

  • cookie、localStorage、indexDB無法讀取
  • DOM和js對象無法獲取
  • 無法發(fā)送Ajax請求

Java 中的跨域問題指的是在使用 Ajax 技術(shù)進行跨域訪問時,由于瀏覽器的安全限制,導(dǎo)致請求被拒絕或者無法獲取到正確的響應(yīng)結(jié)果。

解決 Java 中的跨域問題可以采用以下幾種方式:

1、通過設(shè)置響應(yīng)頭信息來支持跨域訪問。

在 Java 中可以通過設(shè)置響應(yīng)頭信息來支持跨域訪問,例如在 Spring MVC 中可以使用

//@CrossOrigin 注解來設(shè)置允許跨域訪問的源地址:
@CrossOrigin(origins = "http://localhost:8080")
@RequestMapping("/api")
@RestController
public class ApiController {
    // ...
}

2、使用 iframe 來實現(xiàn)跨域訪問。

可以通過在同一頁面中使用 iframe 元素來實現(xiàn)跨域訪問,從而避免了瀏覽器安全限制。例如在前端頁面中可以通過以下方式來獲取來自不同域名的數(shù)據(jù):

var iframe = document.createElement('iframe');
iframe.src = 'http://exampleURL.com/data';
iframe.style.display = 'none';
document.body.appendChild(iframe);
var data = iframe.contentWindow.document.body.innerText;
console.log(data);

 或前端發(fā)送ajax請求

    $("#test").click(function(){
        $.ajax({
            url : "http://localhost:8082/hello.cors",
            type : "GET",
            success : function(result){
                // alert(result);
                console.log(result)
            }
        })
    })

3、使用 WebSocket 來解決跨域問題。

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MyWebSocketHandler(), "/data").setAllowedOrigins("*");
    }
}

4、HttpServletResponse添加頭信息

@RestController
public class CorsController {
?
    @RequestMapping(value = "/hello.cors")
    public String hello(HttpServletResponse response){
        response.addHeader("Access-Control-Allow-Origin","http://localhost:8081");
        //response.addHeader("Access-Control-Allow-Credentials","true");
        return "hello cors";
    }
    
}

5、通過配置類解決跨域

使用HttpServletResponse對象或注解方式,需要在每個需要跨域的方法上都加上相應(yīng)的注解或參數(shù),我們想讓所有的controller都添加跨域功能,我們可以通過實現(xiàn)WebMvcConfigurer接口來自定義跨域配置。

WebMvcConfigurer是一個接口,提供很多自定義的攔截器,例如跨域設(shè)置、類型轉(zhuǎn)化器等springMVC的配置

@Configuration
public class CorsConfig implements WebMvcConfigurer {
?
    /**
     * **addMapping**:配置可以被跨域的路徑,可以任意配置,可以具體到直接請求路徑。
     *
     * **allowedMethods**:允許所有的請求方法訪問該跨域資源服務(wù)器,如:POST、GET、PUT、DELETE等。
     *
     * **allowedOrigins**:允許所有的請求域名訪問我們的跨域資源,可以固定單條或者多條內(nèi)容,如:”[http://www.address.com](http://www.address.com/)“,只有該域名可以訪問我們的跨域資源。
     *
     * **allowedHeaders**:允許所有的請求header訪問,可以自定義設(shè)置任意請求頭信息。
     
     * @param registry
     */
    
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/*.cors")
                .allowedOrigins("http://localhost:8081")
                .allowedMethods("POST","GET")
                .maxAge(1000);
    }
}

總結(jié) 

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

相關(guān)文章

  • 詳細(xì)聊一聊Java中的包機制

    詳細(xì)聊一聊Java中的包機制

    這篇文章主要介紹了Java中包機制的相關(guān)資料,Java包機制通過定義、命名和組織類,防止命名沖突,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-05-05
  • SpringMVC處理multipart請求的示例代碼

    SpringMVC處理multipart請求的示例代碼

    本篇文章主要介紹了SpringMVC處理multipart請求的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 聊聊drools?session的不同

    聊聊drools?session的不同

    在drools中存在2種session,一種是有狀態(tài)的Session (Stateful Session),另外一種一種是無狀態(tài)的Session (Stateless Session,本文通過實例代碼給大家介紹drools?session的不同,感興趣的朋友一起看看吧
    2022-05-05
  • Spring循環(huán)依賴??的解決方式詳解

    Spring循環(huán)依賴??的解決方式詳解

    這篇文章主要介紹了Spring循環(huán)依賴??的解決方式,??循環(huán)依賴??是指兩個或多個Bean互相依賴,形成閉環(huán),導(dǎo)致Spring無法正常完成依賴注入,需要的朋友可以參考下
    2025-05-05
  • 舉例講解Java的Hibernate框架中的多對一和一對多映射

    舉例講解Java的Hibernate框架中的多對一和一對多映射

    這篇文章主要介紹了Java的Hibernate框架中的多對一和一對多映射,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • RocketMQ順序消息的原理與特點

    RocketMQ順序消息的原理與特點

    RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時消息、消息回溯等,本篇我們了解如何實現(xiàn)順序消息的原理與特點
    2023-02-02
  • Spring框架 XML配置事務(wù)控制的步驟操作

    Spring框架 XML配置事務(wù)控制的步驟操作

    這篇文章主要介紹了Spring框架 XML配置事務(wù)控制的步驟操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解java如何集成swagger組件

    詳解java如何集成swagger組件

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著java如何集成swagger組件展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java中BigDecimal類的構(gòu)造詳解及使用

    java中BigDecimal類的構(gòu)造詳解及使用

    這篇文章主要介紹了java中BigDecimal類的構(gòu)造詳解及使用,Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數(shù)進行精確的運算,需要的朋友可以參考下
    2023-07-07
  • Java版給愛人表白的玫瑰花程序代碼

    Java版給愛人表白的玫瑰花程序代碼

    這篇文章主要講解了Java版給愛人表白的玫瑰花程序代碼,具有很好的參考價值,希望對大家有所幫助,一起跟隨小編過來看看吧
    2018-05-05

最新評論

南部县| 乌拉特后旗| 营口市| 昌宁县| 武陟县| 永康市| 四会市| 赞皇县| 北宁市| 政和县| 泸西县| 名山县| 鲁甸县| 武威市| 富川| 康保县| 绥滨县| 佳木斯市| 资源县| 桂阳县| 东明县| 锡林郭勒盟| 东安县| 缙云县| 博野县| 江津市| 克东县| 水城县| 宝清县| 宣汉县| 衡水市| 名山县| 五大连池市| 四平市| 丹江口市| 游戏| 靖西县| 延长县| 阳高县| 佳木斯市| 浏阳市|