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

SpringBoot全局跨域配置實(shí)踐

 更新時間:2026年01月06日 08:41:50   作者:amadeus_liu2  
文章介紹了如何在Spring Boot中通過配置類配置全局跨域,避免在每個Controller上使用@CrossOrigin注解,適用于返回字符串或?qū)ο蟮慕涌?以及通過ResponseEntity提供文件下載的接口,但不適用于直接使用HttpServletResponse的接口

一、可以在配置類中通過配置一個@Bean

直接實(shí)現(xiàn)全局的跨域,不需要在每個controller上加@CrossOrigin注解了。

package cn.edu.tju.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration(proxyBeanMethods = false)
public class MyCorsConfig {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**");
            }
        };
    }


}

二、適用情況

1、返回字符串或?qū)ο蟮慕涌?/p>

    @RequestMapping("/getRate")
    public String getRate(){
        return "rate...";
    }

2.通過ResponseEntity提供文件下載功能的接口

    @RequestMapping(value="/get/csv")
    public ResponseEntity<byte[]> download(HttpServletRequest request)throws Exception{
        String content="first,second,third";
        ResponseEntity.BodyBuilder builder = ResponseEntity.ok();
        builder.contentLength(content.length());
        builder.contentType(MediaType.APPLICATION_OCTET_STREAM);
        String fileName = URLEncoder.encode("download.csv", "UTF-8");
        builder.header("Content-Disposition", "attachment; filename*=UTF-8''" + fileName);

        return builder.body(content.getBytes());
    }

三、不適用的情況

直接適用HttpServletResponse進(jìn)行內(nèi)容返回的接口。需要將注釋的部分打開才能跨域

    @RequestMapping("/get/csv2")
    public void getCSV2(HttpServletResponse response) {

        String resultString="first,second,third";
        byte[] bytes = resultString.getBytes();
        response.reset();// 清空輸出流
        response.setContentType("application/x-download");
        response.setCharacterEncoding("UTF-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + "test" + ".csv");

/*        response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE");
        response.addHeader("Access-Control-Max-Age", "9600");
        response.addHeader("Access-Control-Allow-Headers", "x-requested-with");*/


        try {
            OutputStream os = response.getOutputStream();
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
            response.setHeader("Content-Length", String.valueOf(bais.available()));
            byte[] b = new byte[1024];
            while ((bais.read(b)) > 0) {
                os.write(b);
            }
            bais.close();
            os.flush();
            os.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot整合Keycloak的項目實(shí)踐

    SpringBoot整合Keycloak的項目實(shí)踐

    本文介紹了如何設(shè)置了Keycloak 服務(wù)器及在SpringBoot中使用 Spring Security OAuth2.0結(jié)合Keycloak實(shí)現(xiàn)認(rèn)證和授權(quán),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • kafka springBoot配置的實(shí)現(xiàn)

    kafka springBoot配置的實(shí)現(xiàn)

    本文主要介紹了kafka springBoot配置的實(shí)現(xiàn),通過詳細(xì)解析Spring Boot for Apache Kafka的配置選項,以及如何優(yōu)化Kafka生產(chǎn)者和消費(fèi)者的屬性設(shè)置,感興趣的可以了解一下
    2023-11-11
  • ?Java圖形化界面編程實(shí)現(xiàn)簡單計算器

    ?Java圖形化界面編程實(shí)現(xiàn)簡單計算器

    這篇文章主要介紹了Java圖形化界面編程實(shí)現(xiàn)簡單計算器,下面文章圍繞Java圖形化界面編程實(shí)現(xiàn)簡單計算器的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存管理功能

    SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存管理功能

    本篇文章主要介紹spring boot緩存管理機(jī)制及相關(guān)概念,以及如何結(jié)合Redis實(shí)現(xiàn)緩存管理,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • Java編程簡單應(yīng)用

    Java編程簡單應(yīng)用

    本文主要介紹了三個簡單Java小程序———1、HelloWorld(HelloWorld的來源);2、輸出個人信息3、輸出特殊圖案。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java concurrency集合之ConcurrentLinkedQueue_動力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency集合之ConcurrentLinkedQueue_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java concurrency集合之ConcurrentLinkedQueue,需要的朋友可以參考下
    2017-06-06
  • Spring自動裝配之方法、構(gòu)造器位置的自動注入操作

    Spring自動裝配之方法、構(gòu)造器位置的自動注入操作

    這篇文章主要介紹了Spring自動裝配之方法、構(gòu)造器位置的自動注入操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗的示例

    Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗的示例

    Spring?Validation其實(shí)就是對Hibernate?Validator進(jìn)一步的封裝,方便在Spring中使用,這篇文章主要介紹了Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗的示例,需要的朋友可以參考下
    2023-03-03
  • 關(guān)于RequestMapping注解的作用說明

    關(guān)于RequestMapping注解的作用說明

    這篇文章主要介紹了關(guān)于RequestMapping注解的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • java中的過濾器 Filter應(yīng)用小結(jié)

    java中的過濾器 Filter應(yīng)用小結(jié)

    文章主要介紹了Java Web中的過濾器(Filter)的基本概念、生命周期、配置和應(yīng)用,過濾器可以攔截請求和響應(yīng),用于執(zhí)行一些預(yù)處理或后處理操作,如設(shè)置編碼、校驗用戶身份等,感興趣的朋友一起看看吧
    2025-03-03

最新評論

大庆市| 绥棱县| 麟游县| 丰台区| 安仁县| 湄潭县| 通城县| 梁山县| 沙雅县| 内江市| 沐川县| 武乡县| 彰武县| 旬阳县| 逊克县| 勃利县| 句容市| 镇雄县| 徐汇区| 鄢陵县| 沛县| 右玉县| 思南县| 平陆县| 明水县| 龙海市| 芒康县| 乌鲁木齐县| 阆中市| 曲周县| 承德县| 黑龙江省| 大荔县| 焦作市| 齐河县| 睢宁县| 乌拉特后旗| 临城县| 永嘉县| 信丰县| 同心县|