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;
    }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM