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

springboot解決前后端分離時(shí)的跨域問題

 更新時(shí)間:2021年04月24日 09:06:26   作者:凡繁煩  
這篇文章主要介紹了springboot如何解決前后端分離時(shí)的跨域問題,幫助大家更好的理解和學(xué)習(xí)使用springboot,感興趣的朋友可以了解下

隨著分布式微服務(wù)的興起,越來越多的公司在開發(fā)web項(xiàng)目的時(shí)候選擇前后端分離的模式開發(fā),前后端分開部署,使得分工更加明確,徹底解放了前端。

我們知道,http請(qǐng)求都是無狀態(tài),現(xiàn)在比較流行的都是jwt的形式處理無狀態(tài)的請(qǐng)求,在請(qǐng)求頭上帶上認(rèn)證參數(shù)(token等),前后端分離有好處,也有壞處,第一次開發(fā)前后端分離項(xiàng)目的人,肯定會(huì)遇到前端請(qǐng)求跨域的問題,這個(gè)怎么處理呢?在說處理方案前,有必要說明一下為什么會(huì)跨域和什么是跨域?

一、為什么會(huì)跨域?

出于瀏覽器的同源策略限制。同源策略(Sameoriginpolicy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響??梢哉fWeb是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。同源策略會(huì)阻止一個(gè)域的javascript腳本和另外一個(gè)域的內(nèi)容進(jìn)行交互。所謂同源(即指在同一個(gè)域)就是兩個(gè)頁面具有相同的協(xié)議(protocol),主機(jī)(host)和端口號(hào)(port)

二、什么是跨域?

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

當(dāng)前頁面url 被請(qǐng)求頁面url 是否跨域 原因
https://www.52fansite.com/ https://www.52fansite.com/index.html 同源(協(xié)議、域名、端口號(hào)相同)
https://www.52fansite.com/ http://www.52fansite.com/index.html 協(xié)議不同(https/http)
https://www.52fansite.com/ https://www.baidu.com/ 主域名不同(52fansite/baidu)
https://www.52fansite.com/ https://layui.52fansite.com/ 子域名不同(www/layui)
https://www.52fansite.com:8080/ https://www.52fansite.com:8081/ 同源(協(xié)議、域名、端口號(hào)相同)

三、處理跨域

1、在controller的類上或方法上添加注解

1.1類上加注解

@RestController
@CrossOrigin(origins = "*")
public class CorsController {

    @GetMapping("/cors")
    public String testCors() {
        return "success";
    }
}

1.2方法上加注解

@RestController
public class CorsController {

    @CrossOrigin(origins = "*")
    @GetMapping("/cors")
    public String testCors() {
        return "success";
    }
}

2、在啟動(dòng)類配置全局cors(springboot2.0已經(jīng)過時(shí))

@SpringBootApplication
public class Application {

 public static void main(String[] args) {
  SpringApplication.run(Application.class, args);
 }

 @Bean
 public WebMvcConfigurer corsConfigurer() {
  return new WebMvcConfigurerAdapter() {
   @Override
   public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/*").allowedOrigins("*");
   }
  };
 }
}

替換為

@SpringBootApplication
public class Application {

 public static void main(String[] args) {
  SpringApplication.run(Application.class, args);
 }

 @Bean
 public WebMvcConfigurer corsConfigurer() {
  return new WebMvcConfigurer() {
   @Override
   public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/*").allowedOrigins("*");
   }
  };
 }
}

3、注冊(cè)corsFilter

@Configuration
public class CorsConfig {
    
    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}

以上就是springboot解決前后端分離時(shí)的跨域問題的詳細(xì)內(nèi)容,更多關(guān)于springboot解決跨域的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 小議Java中@param注解與@see注解的作用

    小議Java中@param注解與@see注解的作用

    這篇文章主要介紹了Java中@param注解與@see注解的作用,注解的功能類似于通常代碼中的注釋,需要的朋友可以參考下
    2015-12-12
  • java基于netty NIO的簡(jiǎn)單聊天室的實(shí)現(xiàn)

    java基于netty NIO的簡(jiǎn)單聊天室的實(shí)現(xiàn)

    這篇文章主要介紹了java基于netty NIO的簡(jiǎn)單聊天室的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring Boot @Conditional注解用法示例介紹

    Spring Boot @Conditional注解用法示例介紹

    這篇文章主要給大家介紹了關(guān)于Spring Boot @Conditional注解用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java實(shí)現(xiàn)圖片切割功能

    Java實(shí)現(xiàn)圖片切割功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片切割功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署

    Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署

    本文主要介紹了Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用java實(shí)現(xiàn)Xmodem協(xié)議

    使用java實(shí)現(xiàn)Xmodem協(xié)議

    這篇文章主要介紹了使用java實(shí)現(xiàn)Xmodem協(xié)議的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 使用XSD校驗(yàn)Mybatis的SqlMapper配置文件的方法(2)

    使用XSD校驗(yàn)Mybatis的SqlMapper配置文件的方法(2)

    這篇文章主要介紹了使用XSD校驗(yàn)Mybatis的SqlMapper配置文件的方法(2)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Java中@JSONField和@JsonProperty注解的用法及區(qū)別詳解

    Java中@JSONField和@JsonProperty注解的用法及區(qū)別詳解

    @JsonProperty和@JSONField注解都是為了解決obj轉(zhuǎn)json字符串的時(shí)候,將java bean的屬性名替換成目標(biāo)屬性名,下面這篇文章主要給大家介紹了關(guān)于Java中@JSONField和@JsonProperty注解的用法及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • 詳細(xì)介紹高性能Java緩存庫Caffeine

    詳細(xì)介紹高性能Java緩存庫Caffeine

    本篇文章主要介紹了詳細(xì)介紹高性能Java緩存庫Caffeine,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Springboot整合實(shí)現(xiàn)郵件發(fā)送的原理詳解

    Springboot整合實(shí)現(xiàn)郵件發(fā)送的原理詳解

    SpringBoot集成郵件服務(wù)非常簡(jiǎn)單,通過簡(jiǎn)單的學(xué)習(xí)即可快速掌握郵件業(yè)務(wù)類的核心邏輯和企業(yè)郵件的日常服務(wù),本文給大家分享Springboot整合實(shí)現(xiàn)郵件發(fā)送的原理,一起看看吧
    2021-06-06

最新評(píng)論