国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot 實(shí)現(xiàn)跨域的六種方式

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot 實(shí)現(xiàn)跨域的六種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

1.通過(guò)SpringSecurity方式配置

2.使用Spring提供的CorsFilter注入Bean(推薦)

3.使用注解@CrossOrigin注解(繁瑣)

4.通過(guò)ResponseBodyAdvice 實(shí)現(xiàn)跨域

5.通過(guò)HttpServletResponse設(shè)置跨域

6.通過(guò)WebMvcConfigurer 實(shí)現(xiàn)跨域


1.通過(guò)SpringSecurity方式配置

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 允許跨域
        http.cors().configurationSource(corsConfigurationSource());
        // 省略其他代碼...
    }

    // 跨域配置
    private CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowedMethods(Arrays.asList("GET", "POST"));// 支持請(qǐng)求方式
        config.addAllowedOriginPattern("*");// 支持跨域
        config.setAllowCredentials(true);// cookie
        config.addAllowedHeader("*");// 允許請(qǐng)求頭信息
        config.addExposedHeader("*");// 暴露的頭部信息

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);// 添加地址映射
        return source;
    }

}

2.使用Spring提供的CorsFilter注入Bean(推薦)

//....省略其他代碼

    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));// 支持請(qǐng)求方式
        config.addAllowedOriginPattern("*");// 支持跨域
        config.setAllowCredentials(true);// cookie
        config.addAllowedHeader("*");// 允許請(qǐng)求頭信息
        config.addExposedHeader("*");// 暴露的頭部信息

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);// 添加地址映射
        return new CorsFilter(source);
    }
//....省略其他代碼

3.使用注解@CrossOrigin注解(繁瑣)

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@CrossOrigin(origins = "*")
public class DemoController {

    @RequestMapping("/test")
    public Object test() {
        return "hello world";
    }
}

4.通過(guò)ResponseBodyAdvice 實(shí)現(xiàn)跨域

與第5類似文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-621907.html

import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
 
@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {
    /**
     * 內(nèi)容是否需要重寫(通過(guò)此方法可以選擇性部分控制器和方法進(jìn)行重寫)
     * 返回 true 表示重寫
     */
    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;
    }
    /**
     * 方法返回之前調(diào)用此方法
     */
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                                  Class selectedConverterType, ServerHttpRequest request,
                                  ServerHttpResponse response) {
        // 設(shè)置跨域
        response.getHeaders().set("Access-Control-Allow-Origin", "*");
        return body;
    }
}

5.通過(guò)HttpServletResponse設(shè)置跨域

HttpServletResponse#setHeader("Access-Control-Allow-Origin", "*");

6.通過(guò)WebMvcConfigurer 實(shí)現(xiàn)跨域

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 所有接口
                .allowCredentials(true) // 是否發(fā)送 Cookie
                .allowedOriginPatterns("*") // 支持域
                .allowedMethods(new String[]{"GET", "POST"}) // 支持方法
                .allowedHeaders("*")// 允許請(qǐng)求頭
                .exposedHeaders("*");// 暴露出去的響應(yīng)頭
    }
}

到了這里,關(guān)于SpringBoot 實(shí)現(xiàn)跨域的六種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【并發(fā)編程】SpringBoot創(chuàng)建線程池的六種方式

    1. 自定義線程池 1.1 示例代碼 ??控制臺(tái)打?。?2. 固定長(zhǎng)度線程池 2.1 示例代碼 ??控制臺(tái)打?。???前3個(gè)任務(wù)被同時(shí)執(zhí)行,因?yàn)閯偤糜?個(gè)核心線程。后2個(gè)任務(wù)會(huì)被存放到阻塞隊(duì)列,當(dāng)執(zhí)行前3個(gè)任務(wù)的某個(gè)線程空閑時(shí)會(huì)從隊(duì)列中獲取任務(wù)并執(zhí)行。 2.2 源碼剖析 ??該類型

    2024年02月16日
    瀏覽(27)
  • SpringBoot接受前臺(tái)參數(shù)的六種方式以及統(tǒng)一響應(yīng)

    SpringBoot接受前臺(tái)參數(shù)的六種方式以及統(tǒng)一響應(yīng)

    請(qǐng)求 SpringBoot接受前臺(tái)參數(shù)的六種方式,首先因?yàn)閺那芭_(tái)發(fā)送的請(qǐng)求沒(méi)有界面的話只能是從地址欄發(fā)送并且只能是Get請(qǐng)求,為了測(cè)試其他的請(qǐng)求,所以我們使用一個(gè)工具-Postman,Postman是一款功能強(qiáng)大的網(wǎng)頁(yè)調(diào)試與發(fā)送網(wǎng)頁(yè)HTTP請(qǐng)求的Chrome插件。 對(duì)于前臺(tái)傳過(guò)來(lái)的參數(shù)大致分為六

    2024年02月08日
    瀏覽(25)
  • 探究Spring Bean的六種作用域:了解適用場(chǎng)景和使用方式

    探究Spring Bean的六種作用域:了解適用場(chǎng)景和使用方式

    主要對(duì)單例作用域與原型作用域進(jìn)行重點(diǎn)說(shuō)明,其余四個(gè)了解即可 單例作用域一般是默認(rèn)的Bean作用域。Spring容器在第一次獲取Bean時(shí)創(chuàng)建實(shí)例,并在后續(xù)請(qǐng)求中返回同一個(gè)實(shí)例。 例如: 我們現(xiàn)在創(chuàng)建一個(gè)公共的Bean供用戶一與用戶二使用,用戶一再使用完后對(duì)其內(nèi)容進(jìn)行修改

    2024年02月15日
    瀏覽(36)
  • C語(yǔ)言實(shí)現(xiàn)排序算法的六種方式

    1、冒泡法 2、交換法 每次用當(dāng)前的元素一一的同其后的元素 3、選擇法 從數(shù)據(jù)中選擇最小的同第一個(gè)值交換,在從剩下的部分中選擇最小的與第二個(gè)交換,這樣往復(fù)下去 4、插入法 在前面的數(shù)中尋找相應(yīng)的位置插入, 然后繼續(xù)下一張 插入排序就是每一步都將一個(gè)待排數(shù)據(jù)按

    2024年01月25日
    瀏覽(19)
  • Java面試之單例模式的六種實(shí)現(xiàn)方式

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 由于設(shè)計(jì)模式在面向?qū)ο笾衅鹬e足輕重的作用,在面試中很多公司都喜歡問(wèn)一下有關(guān)設(shè)計(jì)模式的問(wèn)題。在常用的設(shè)計(jì)模式中,Singleton單例模式是唯一一個(gè)能用短短幾十行代碼完整實(shí)現(xiàn)的模式,因此,寫

    2024年02月10日
    瀏覽(21)
  • 最常見(jiàn)的六種跨域解決方案

    最常見(jiàn)的六種跨域解決方案

    前言:什么是跨域? JSONP CORS 搭建Node代理服務(wù)器 Nginx反向代理 postMessage Websocket 總結(jié) 跨域就是當(dāng)在頁(yè)面上發(fā)送ajax請(qǐng)求時(shí), 由于瀏覽器同源策略的限制,要求當(dāng)前頁(yè)面和服務(wù)端必須同源,也就是協(xié)議、域名和端口號(hào)必須一致 。 如果協(xié)議、域名和端口號(hào)中有其中一個(gè)不一致,

    2024年01月25日
    瀏覽(24)
  • 探究Spring Boot 中實(shí)現(xiàn)跨域的幾種方式

    探究Spring Boot 中實(shí)現(xiàn)跨域的幾種方式

    在現(xiàn)代Web應(yīng)用中,由于安全性和隱私的考慮,瀏覽器限制了從一個(gè)域向另一個(gè)域發(fā)起的跨域HTTP請(qǐng)求。解決這個(gè)問(wèn)題的一種常見(jiàn)方式是實(shí)現(xiàn)跨域資源共享(CORS)。Spring Boot提供了多種方式來(lái)處理跨域請(qǐng)求,本文將介紹其中的幾種方法。 Spring Boot提供了一個(gè)注解 @CrossOrigin ,可以

    2024年02月05日
    瀏覽(20)
  • 實(shí)現(xiàn)跨域的幾種方式

    實(shí)現(xiàn)跨域的幾種方式

    前后端的分離導(dǎo)致了跨域的產(chǎn)生 ?跨域的三要素:協(xié)議 域名 端口 三者有一個(gè)不同即產(chǎn)生跨域 例如: http ://www.csdn.com https ://www.csdn.com 由于協(xié)議不同,端口不同而產(chǎn)生跨域 注:http的默認(rèn)端口80,https的默認(rèn)端口443 跨域的解決方案 前端:webpack proxy,jsonp,ngix反向代理,webpac

    2024年02月13日
    瀏覽(24)
  • 服務(wù)限流的六種方式

    服務(wù)限流,是指通過(guò)控制請(qǐng)求的速率或次數(shù)來(lái)達(dá)到保護(hù)服務(wù)的目的,在微服務(wù)中,我們通常會(huì)將它和熔斷、降級(jí)搭配在一起使用,來(lái)避免瞬時(shí)的大量請(qǐng)求對(duì)系統(tǒng)造成負(fù)荷,來(lái)達(dá)到保護(hù)服務(wù)平穩(wěn)運(yùn)行的目的。下面就來(lái)看一看常見(jiàn)的6種限流方式,以及它們的實(shí)現(xiàn)與使用。 固定窗

    2024年02月10日
    瀏覽(22)
  • 【SpringMVC]獲取參數(shù)的六種方式

    【SpringMVC]獲取參數(shù)的六種方式

    目錄 1.通過(guò)ServletAPI獲取 2.通過(guò)控制器方法的形參獲取 3.@RequestParam:將請(qǐng)求參數(shù)和控制器方法的形參綁定 4.@RequestHeader:將請(qǐng)求頭信息與控制器方法的形參的值進(jìn)行綁定 5. CookieValue:將cookie數(shù)據(jù)和控制器方法的形參綁定 Cookie: ?編輯 6.通過(guò)控制器方法的實(shí)體類類型的形參獲取

    2024年02月09日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包