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

SpringBoot后端解決跨域問題的3種方案分享

 更新時間:2023年07月12日 16:22:51   作者:Leon_coding  
這篇文章主要給大家分享介紹了關(guān)于SpringBoot后端解決跨域問題的3種方案,跨域指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,它是由瀏覽器的同源策略造成的,是瀏覽器施加的安全限制,需要的朋友可以參考下

1.跨域的介紹

跨源資源共享(CORS——Cross-Origin Resource Sharing,跨源資源共享,或通俗地譯為跨域資源共享)是一種基于 HTTP 頭的機(jī)制,該機(jī)制通過允許服務(wù)器標(biāo)示除了它自己以外的其它源(域、協(xié)議或端口),使得瀏覽器允許這些源訪問加載自己的資源。跨源資源共享還通過一種機(jī)制來檢查服務(wù)器是否會允許要發(fā)送的真實請求,該機(jī)制通過瀏覽器發(fā)起一個到服務(wù)器托管的跨源資源的“預(yù)檢”請求。在預(yù)檢中,瀏覽器發(fā)送的頭中標(biāo)示有 HTTP 方法和真實請求中會用到的頭。

2.跨域產(chǎn)生原因

跨域問題所產(chǎn)生的原因是瀏覽器的“同源策略”所導(dǎo)致的。什么是同源策略呢,就是瀏覽器規(guī)定了,我當(dāng)前頁面和請求頁面的 1網(wǎng)絡(luò)協(xié)議、2主機(jī)域名、3端口,這三部分必須保證一模一樣才行。如下圖:

這也主要是瀏覽器為了保證用戶上網(wǎng)的基本安全需求而設(shè)置的。

1.為了防止惡意網(wǎng)頁可以獲取其他網(wǎng)站的本地數(shù)據(jù)。

2.為了防止惡意網(wǎng)站iframe其他網(wǎng)站的時候,獲取數(shù)據(jù)。

3.為了防止惡意網(wǎng)站在自已網(wǎng)站有訪問其他網(wǎng)站的權(quán)利,以免通過cookie免登,拿到數(shù)據(jù)。

3.跨域的解決方案

跨域的解決方案有很多種,前后端都有。這里主要介紹下我所知道的三種方案,并配以代碼展示。

1.在后端被訪問代碼的方法上加注解@CrossOrign。這個注解是spring-web中的注解,我們只需在方法上面加注之后,就會解決CORS問題。例如:

/**
     * 獲取用戶信息
     * 
     * @return 用戶信息
     */
    @GetMapping("getInfo")
    @CrossOrigin
    public AjaxResult getInfo()
    {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        // 角色集合
        Set<String> roles = permissionService.getRolePermission(user);
        // 權(quán)限集合
        Set<String> permissions = permissionService.getMenuPermission(user);
        AjaxResult ajax = AjaxResult.success();
        ajax.put("user", user);
        ajax.put("roles", roles);
        ajax.put("permissions", permissions);
        return ajax;
    }

但是,后端有很多被訪問的方法,我們不能在每個方法上面都加上這個注解,代碼冗余。所以就有了第二種方法,我們可以添加一個過濾器,來解決CORS問題,代碼如下:

 
@Configuration
public class CORSFilter {
    @Bean
    public CorsFilter corsFilter(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsFilter(source);
    }
}

還有一種解決方法,我們可以通過實現(xiàn)接口并重寫方法來解決跨域問題,代碼如下:

@Configuration
public class CORSConfiguration implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","POST","PUT","HEAD")
                .allowCredentials(true)
                .allowedHeaders("*")
                .maxAge(3600);
    }
}

通過這三種方式,我們就可以解決CORS跨域問題。

總結(jié)

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

相關(guān)文章

  • MyBatis-Plus?UserMpper接口示例實現(xiàn)

    MyBatis-Plus?UserMpper接口示例實現(xiàn)

    本文主要介紹了MyBatis-Plus?UserMpper接口示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • SpringBoot集成ECDH密鑰交換的方法

    SpringBoot集成ECDH密鑰交換的方法

    ECDH密鑰交換算法通過橢圓曲線和Diffie-Hellman方法生成共享密鑰,用于前端和后端之間的AES加密通信,前端使用elliptic.js生成密鑰對,后端使用crypto-js.min.js進(jìn)行AES加密,本文給大家介紹SpringBoot集成ECDH密鑰交換的相關(guān)知識,感興趣的朋友一起看看吧
    2025-01-01
  • Java方法重載實現(xiàn)原理及代碼實例

    Java方法重載實現(xiàn)原理及代碼實例

    這篇文章主要介紹了Java方法重載實現(xiàn)原理及代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • springboot使用事物注解方式代碼實例

    springboot使用事物注解方式代碼實例

    這篇文章主要介紹了springboot使用事物注解方式代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java如何取掉json數(shù)據(jù)中值為null的屬性字段

    Java如何取掉json數(shù)據(jù)中值為null的屬性字段

    這篇文章主要介紹了Java如何取掉json數(shù)據(jù)中值為null的屬性字段,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • jdbcTemplate使用方法實例解析

    jdbcTemplate使用方法實例解析

    這篇文章主要介紹了jdbcTemplate使用方法實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java面向?qū)ο蠡A(chǔ),類,變量,方法

    Java面向?qū)ο蠡A(chǔ),類,變量,方法

    這篇文章主要介紹了Java面向?qū)ο蠡A(chǔ),類,變量,方法,需要的朋友可以參考下
    2020-10-10
  • java統(tǒng)計字符串單詞個數(shù)的方法解析

    java統(tǒng)計字符串單詞個數(shù)的方法解析

    在一些項目中可能需要對一段字符串中的單詞進(jìn)行統(tǒng)計,本文在這里分享了一個簡單的demo,有需要的朋友可以拿去看一下
    2017-01-01
  • nohup運行Java tail查看日志方式

    nohup運行Java tail查看日志方式

    nohup命令允許程序在用戶退出賬戶或關(guān)閉終端后繼續(xù)運行,常與"&"結(jié)合使用以實現(xiàn)程序的后臺執(zhí)行,配合重定向操作,nohup可以將程序輸出保存到日志文件中,如nohup java -jar XXX.jar &> myout.log &,此外,tail命令可用于實時監(jiān)控日志文件的變化
    2024-09-09
  • Java診斷工具Arthas安裝與卸載的詳細(xì)指南

    Java診斷工具Arthas安裝與卸載的詳細(xì)指南

    Arthas?是阿里巴巴開源的一款強(qiáng)大的?Java?診斷工具,能夠幫助開發(fā)者在不重啟應(yīng)用的情況下,實時監(jiān)控和診斷?Java?應(yīng)用的運行狀態(tài),本文將詳細(xì)介紹?Arthas?的多種安裝方式、使用方法以及卸載步驟,幫助開發(fā)者快速上手并應(yīng)用于實際開發(fā)中,需要的朋友可以參考下
    2025-02-02

最新評論

孙吴县| 巴南区| 麦盖提县| 海盐县| 剑河县| 满洲里市| 岳池县| 洪洞县| 大城县| 同仁县| 昌宁县| 平果县| 海城市| 新建县| 清水河县| 岳普湖县| 嘉峪关市| 贺州市| 调兵山市| 海淀区| 乐安县| 宣化县| 六安市| 崇阳县| 平山县| 宣城市| 海林市| 浦县| 宣城市| 兰溪市| 黔东| 正蓝旗| 松江区| 米泉市| 南汇区| 彭州市| 神木县| 且末县| 台中县| 科技| 重庆市|