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

Java中跨域問(wèn)題解決的幾種方式舉例詳解

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

前言

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

什么是跨域

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

比如 a頁(yè)面想獲取b頁(yè)面的資源,a與b頁(yè)面的協(xié)議、域名或端口號(hào)不同,進(jìn)行的訪問(wèn)行為都是跨域,由于瀏覽器的同源策略,會(huì)限制跨域請(qǐng)求資源。

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

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

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

非同源限制

  • cookie、localStorage、indexDB無(wú)法讀取
  • DOM和js對(duì)象無(wú)法獲取
  • 無(wú)法發(fā)送Ajax請(qǐng)求

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

解決 Java 中的跨域問(wèn)題可以采用以下幾種方式:

1、通過(guò)設(shè)置響應(yīng)頭信息來(lái)支持跨域訪問(wèn)。

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

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

2、使用 iframe 來(lái)實(shí)現(xiàn)跨域訪問(wèn)。

可以通過(guò)在同一頁(yè)面中使用 iframe 元素來(lái)實(shí)現(xiàn)跨域訪問(wèn),從而避免了瀏覽器安全限制。例如在前端頁(yè)面中可以通過(guò)以下方式來(lái)獲取來(lái)自不同域名的數(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請(qǐng)求

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

3、使用 WebSocket 來(lái)解決跨域問(wèn)題。

@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、通過(guò)配置類(lèi)解決跨域

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

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

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

總結(jié) 

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

相關(guān)文章

  • Java單表實(shí)現(xiàn)評(píng)論回復(fù)功能(多種實(shí)現(xiàn)方式)

    Java單表實(shí)現(xiàn)評(píng)論回復(fù)功能(多種實(shí)現(xiàn)方式)

    這篇文章主要介紹了Java單表實(shí)現(xiàn)評(píng)論回復(fù)功能,大家都知道評(píng)論功能有多種實(shí)現(xiàn)方式,本文逐一給大家詳細(xì)講解,需要的朋友可以參考下
    2023-03-03
  • 基于java ssm springboot實(shí)現(xiàn)選課推薦交流平臺(tái)系統(tǒng)

    基于java ssm springboot實(shí)現(xiàn)選課推薦交流平臺(tái)系統(tǒng)

    這篇文章主要介紹了選課推薦交流平臺(tái)系統(tǒng)是基于java ssm springboot來(lái)的實(shí)現(xiàn)的,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理

    SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理

    軟件開(kāi)發(fā)中經(jīng)常有開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境,而且一般這些環(huán)境配置會(huì)各不相同,本文主要介紹了SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理,感興趣的可以了解一下
    2024-01-01
  • 基于redis setIfAbsent的使用說(shuō)明

    基于redis setIfAbsent的使用說(shuō)明

    這篇文章主要介紹了基于redis setIfAbsent的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 打開(kāi).properties中文顯示unicode編碼問(wèn)題以及解決

    打開(kāi).properties中文顯示unicode編碼問(wèn)題以及解決

    這篇文章主要介紹了打開(kāi).properties中文顯示unicode編碼問(wèn)題以及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring Boot Web應(yīng)用程序配置詳解

    Spring Boot Web應(yīng)用程序配置詳解

    這篇文章主要介紹了Spring Boot Web應(yīng)用程序配置詳解,本文中將介紹一些Web應(yīng)用程序最常用的配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • MybatisPlus字段類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)示例

    MybatisPlus字段類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)示例

    本文主要介紹了MybatisPlus如何完成字段類(lèi)型轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 全網(wǎng)最新Log4j?漏洞修復(fù)和臨時(shí)補(bǔ)救方法

    全網(wǎng)最新Log4j?漏洞修復(fù)和臨時(shí)補(bǔ)救方法

    Apache?Log4j?遠(yuǎn)程代碼執(zhí)行漏洞,如何快速修復(fù)log4j2漏洞,本文給大家介紹下Log4j?漏洞修復(fù)和臨時(shí)補(bǔ)救方法,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 簡(jiǎn)單易懂講解happens-before原則

    簡(jiǎn)單易懂講解happens-before原則

    Java內(nèi)存模型中的happens-before是什么?為什么會(huì)有這東西的存在?一個(gè)新東西肯定是上手先,但是等我們空下來(lái)回過(guò)頭來(lái),我們還是需要去理解這些知識(shí),只有這樣我才能深刻的記住,并且運(yùn)用熟練。下來(lái)和小編來(lái)一起學(xué)習(xí)下
    2019-05-05
  • Spring Security注解方式權(quán)限控制過(guò)程

    Spring Security注解方式權(quán)限控制過(guò)程

    這篇文章主要介紹了Spring Security注解方式權(quán)限控制過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評(píng)論