java解决跨域问题

项目场景:

练习黑马乐优商城项目遇到跨域问题,总结跨域

问题描述:

浏览器控制台出现"No 'Access-Control-Allow-Origin"

在这里插入图片描述

什么是跨域

在这里插入图片描述

为什么会有跨域问题

在这里插入图片描述

解决跨域问题的方案

Jsonp

在这里插入图片描述

Nginx反向代理

在这里插入图片描述

CORS

在这里插入图片描述

CORS解决跨域

什么是CORS

在这里插入图片描述

CORS原理

浏览器会将ajax请求分为两类,其处理方案略有差异:简单请求、特殊请求

简单请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特殊请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有没有CORS区别

在这里插入图片描述

SpringMVC实现CORS

在这里插入图片描述
在这里插入图片描述

package com.leyou.gateway.config;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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;

import java.util.Arrays;

/**
 * @Date: Created in 9:40 2021/2/8
 */
@Configuration
@EnableAutoConfiguration
public class CORSFilter {
    /**
     * 注册过滤器bean,设置跨域规则
     */
    @Bean
    public CorsFilter corsFilter() {
        //配置CORS相关规则
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //允许哪些域名可以跨域访问
        corsConfiguration.setAllowedOrigins(Arrays.asList("http://manage.leyou.com","http://localhost:9001"));
        //允许哪些提交方式可以访问
        corsConfiguration.setAllowedMethods(Arrays.asList("GET","PUT","DELETE","POST","OPTIONS"));
        //允许哪些请求头可以访问
        corsConfiguration.setAllowedHeaders(Arrays.asList("*"));
        //是否允许操作cookie
        corsConfiguration.setAllowCredentials(true);
        //设置预检请求有效期
        corsConfiguration.setMaxAge(1800L);
        //配置拦截请求路径
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfiguration);
        CorsFilter corsFilter = new CorsFilter(source);
        return corsFilter;
    }

}

posted @ 2022-01-24 10:20  KeepArlen  阅读(1349)  评论(0)    收藏  举报