跨域问题

  • 跨域概念:

    指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

  •  同源策略:

    是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;

  • 官方文档

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

 

 

 

  • 解决跨域方法一:使用nginx部署为同一域

 

  •  解决跨域方法二:配置当次请求允许跨域

    ①当服务有网关时,在网关配置config即可

package com.he.gulimall.gateway.config;

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

import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;


@Configuration
public class GulimallCorsConfiguration {

    @Bean
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();

        //1、配置跨域

        //跨域请求暴露的字段
        corsConfiguration.addAllowedHeader("*");
        //支持哪些方法跨域
        corsConfiguration.addAllowedMethod("*");
        //支持哪些来源的请求跨域
        corsConfiguration.addAllowedOrigin("*");
        //跨域请求默认不包含cookie,设置为true可以包含 cookie
        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }
}

 

posted @ 2022-08-03 15:40  Homnay  阅读(24)  评论(0)    收藏  举报