先後端分離時,跨域問題如何解決?

首先關於先後端分離開發  跨域問題的解決思路有多種,小喵只知道幾種,藉此分享給你們,java

        1. 使用Nginx代理: Nginx統一程序入口,經過Nginx分發到不一樣的服務.web

        2.JSONP,經過<script>標籤請求接口,經過回調函數的方式傳遞跨域數據.spring

        3.CORS,一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing),後端

                CORS 須要瀏覽器和服務器同時支持.跨域

                 全部瀏覽器都支持該功能.瀏覽器

                 服務器須要單獨配置使用  @CrossOrigin 或 全局配置類服務器

小喵採用的是第三種方法 :cors

一 . SpringBoot開發前後端分離

     首先,咱們能夠採用在每一個controller上都寫一個註解 @ CrossOrigin 函數

但這種方式只限於controller較少的狀況下使用,controller多的狀況下,配置的有點麻煩.

所以咱們採用全局配置類,將全局配置類放在包的根下面??.config 包下(注: 該包根據項目建立時的包名配置)

代碼 :

package com.czxy.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;


/**  全局跨域配置類
 * Created by liangtong.
 */
@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些原始域
        config.addAllowedOrigin("*");
        //是否發送Cookie信息
        config.setAllowCredentials(true);
        //放行哪些原始域(請求方式)
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");     //get
        config.addAllowedMethod("PUT");     //put
        config.addAllowedMethod("POST");    //post
        config.addAllowedMethod("DELETE");  //delete
        config.addAllowedMethod("PATCH");
        config.addAllowedHeader("*");

        //2.添加映射路徑
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }

}

二 . 微服務開發(Spring Boot + Spring Cloud)

微服務開發時咱們只須要將全局配置類方到網關下面便可

這樣就能夠完成跨域問題的解決!

但願你們多給小喵一點支持和關注!!!

小喵在這謝謝了!!!!

(^_^)~喵~!!

相關文章
相關標籤/搜索