国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot 如何解決富文本上傳圖片跨域問題

Spring Boot 如何解決富文本上傳圖片跨域問題

2022-01-03 17:38如漩渦 Java教程

這篇文章主要介紹了Spring Boot 如何解決富文本上傳圖片跨域問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Spring Boot 解決富文本上傳圖片跨域

在前后端分離的情況下,后臺所寫的接口在前端調用的時候,可能前端瀏覽器已經讀取到了數據,但是在前端代碼ajax請求的時候,請求回調里會出現頁面跨域的控制臺打印錯誤,這個時候只需要后臺配置一下頭部請求就可以解決

我用的是SpringBoot,講解一下如何配置SpringBoot來解決頁面跨域問題

創建一個WebMvcConfig類

將關于web的配置信息都用注解的形式來配置,相對比較方便

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.uhope.web.codegenerator.filter.ServiceFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.nio.charset.Charset;
/**
 * Spring MVC 配置
 * @author Chenbin
 */
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    private final Logger logger = LoggerFactory.getLogger(WebMvcConfig.class);
    /**
     * 解決路徑資源映射問題
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
    /**
     * 使用fastJson代替Jackjson解析JSON數據
     *
     * @return
     */
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        /*
         * 轉換為JSON字符串,默認:
         * WriteNullListAsEmpty    List字段如果為null,輸出為[],而非null
         * WriteNullStringAsEmpty  字符類型字段如果為null,輸出為”“,而非null
         * WriteMapNullValue       是否輸出值為null的字段,默認為false
         */
        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        fastConverter.setDefaultCharset(Charset.forName("UTF-8"));
        HttpMessageConverter<?> converter = fastConverter;
        return new HttpMessageConverters(converter);
    }
    /**
     * 這個Filter 解決頁面跨域訪問問題
     */
    @Bean
    public FilterRegistrationBean omsFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new ServiceFilter());
        registration.addUrlPatterns("/*");
        registration.setName("MainFilter");
        registration.setAsyncSupported(true);
        registration.setOrder(1);
        return registration;
    }
}

其中JSON數據返回需要引入阿里巴巴FastJson這個依賴,可以自行去pom.xml文件中引入

這樣還不夠,還需要

創建一個Filter類,做頁面跨域的處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * @author Chenbin
 */
public class ServiceFilter implements Filter {
    private static final Logger LOGGER = LoggerFactory.getLogger(ServiceFilter.class);
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
            throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) response;
        HttpServletRequest req = (HttpServletRequest) request;
        // 解決頁面跨域訪問問題
        resp.setHeader("Access-Control-Allow-Origin", "*");
        resp.setHeader("Access-Control-Allow-Credentials", "true");
        resp.setHeader("Access-Control-Allow-Methods", "*");
        resp.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");
        resp.setHeader("Access-Control-Expose-Headers", "*");
        filterChain.doFilter(req, resp);
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void destroy() {
    }
}

這兩個類配置好了以后,重啟服務,再與前端交互就不會出現這樣的跨域問題了,因為在Filter這個類里加了一個請求頭Access-Control-Allow-Origin

springboot文件上傳跨域

前端

?
1
2
3
//跨域認證
axios.defaults.withCredentials = false
axios.defaults.crossDomain = true

后端

2個類復制進去

啟動類添加包掃描

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
/**
 * Cros協議的配置類。
 * 繼承WebMvcConfigurerAdapter,并且重寫方法addCorsMappings。
 * addCorsMappings方法是用于增加Cros協議配置的方法。默認的實現是空實現。也就是說,在默認的配置環境中,是不進行Cros協議的配置的。
 */
@Configuration
public class CrosConfiguration extends WebMvcConfigurerAdapter { 
    @Autowired
    ProcessInterceptor processInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加攔截器(攔截器中只有preHandle返回true時才繼續執行下一個攔截器或者controller,否則直接返回)
        // registry.addInterceptor(logInterceptor).addPathPatterns("/**");
        registry.addInterceptor(processInterceptor).addPathPatterns("/**");
        //registry.addInterceptor(csrCheckInterceptor).addPathPatterns("/**");
        //registry.addInterceptor(menuAuthInterceptor).addPathPatterns("/**");
        super.addInterceptors(registry);
    }
    /**
     * 就是注冊的過程,注冊Cors協議的內容。
     * 如: Cors協議支持哪些請求URL,支持哪些請求類型,請求時處理的超時時長是什么等。
     * @param registry - 就是用于注冊Cros協議內容的一個注冊器。
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry
                .addMapping("/**")// 所有的當前站點的請求地址,都支持跨域訪問。
                .allowedMethods("GET", "POST", "PUT", "DELETE","OPTIONS") // 當前站點支持的跨域請求類型是什么。
                .allowCredentials(true) // 是否支持跨域用戶憑證
                .allowedHeaders("*")
                .allowedOrigins("*") // 所有的外部域都可跨域訪問。 如果是localhost則很難配置,因為在跨域請求的時候,外部域的解析可能是localhost、127.0.0.1、主機名
                .maxAge(3600); // 超時時長設置為1小時。 時間單位是秒。
    }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @author:Administrator
 * @date:2019/10/9
 */
@Component
public class ProcessInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        httpServletResponse.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Accept, Content-Type,Authorization");
        httpServletResponse.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
        String origin = httpServletRequest.getHeader("Origin");
        httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
        // 是否允許瀏覽器攜帶用戶身份信息(cookie),設置為true,必須設置域名,不能使用通配符
//        httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
//        httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
//        httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
//        httpServletResponse.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
        String method = httpServletRequest.getMethod();
        if (method.equals("OPTIONS")) {
            httpServletResponse.setStatus(200);
            return false;
        }
        return true;
    }
 
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    }
 
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    }
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/m0_37701381/article/details/80388728

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美精品1区2区3区 日本电影中文字幕 | 黄瓜av| 久毛片 | 伊人99 | 日韩色爱 | 成人免费在线观看视频 | 韩国久久| 狠狠躁夜夜躁人人爽天天天天97 | 欧美日韩久久精品 | 久久99精品久久久 | 涩涩天堂 | 欧美中文 | 亚洲免费精品 | 日韩精品一区二区在线观看 | 亚洲国产一区二区三区 | 免费亚洲网站 | 国产一区二区三区在线 | 99福利视频 | 日韩视频在线观看 | 中文字幕在线观看一区二区三区 | 搡女人真爽免费午夜网站 | 秋霞av电影 | 狠狠干美女| 精品一区二区电影 | 午夜影院在线 | 天天艹久久 | 黄色av免费 | 亚洲福利影院 | 日韩在线永久免费播放 | 亚洲九九九 | 日本三级网址 | 亚洲免费成人av | 一级黄色一级毛片 | 久久久久久网站 | 欧美视频一二三区 | 在线亚洲欧美 | 综合九九 | 成人精品一区亚洲午夜久久久 | 亚洲精品一区二区 | 免费观看av电影 | 国产成人av一区 |