Ajax请求跨域问题、

本文详细解析了跨域问题的定义、发生场景及CORS(跨源资源共享)的解决原理。阐述了如何通过配置SpringMVC的CorsFilter来实现跨域请求,并介绍了携带cookie的跨域请求需满足的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是跨域?

1、跨域是指、跨域名访问,例如:

  • 域名不一致;
  • 域名一致,端口不同;
  • 二级域名访问;

2、跨域问题什么时候发生?

  • 只有Ajax 请求时候才会发生该问题;一个页面发生 Ajax 请求只能够请求 当前域名的路径、有效防止跨域攻击;

3、如何洁具跨域问题?

  • cors解决跨域,“跨域资源共享”(Cross-origin resource sharing);
2、cors解决跨域原理:

1、当浏览器发现发起的ajax请求是简单请求时,会在请求头中携带一个字段:Origin.
Origin. 字段中内容为:协议+域名+端口,服务会根据这个值决定是否允许其跨域。
2、如服务器允许跨域,在返回的响应头中携带以下信息;
Access-Control-Allow-Origin: http://域名 Access-Control-Allow-Origin可接受的域名
Access-Control-Allow-Credentials: true Access-Control-Allow-Credentials是否允许携带cookie,默认不携带cookie
Content-Type: text/html; charset=utf-8

2.1、携带cookie 需满足条件有哪些?
  • 响应头中的Access-Control-Allow-Origin一定不能为*
  • Access-Control-Allow-Credentials: true
  • 浏览器发起ajax需要指定withCredentials 为true ,就是Ajax中指定withCredentials 为true
3、解决跨域配置:

springMvc 已经集成了 CorsFilter ,直接配置即可;

在网关微服务配置配置类、

/**
 * @auther SyntacticSugar
 * @data 2018/12/3 0003下午 7:16
 * 配置 跨域操作  cookie
 */
@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //添加配置
        CorsConfiguration conf = new CorsConfiguration();
        /**
         * 设置域 、 设置是否携带cookie  、设置方式
         */
        conf.addAllowedOrigin("http://manage.leyou.com");
        conf.setAllowCredentials(true);
        conf.addAllowedMethod("GET");
        conf.addAllowedMethod("PUT");
        conf.addAllowedMethod("DELETE");
        conf.addAllowedMethod("OPTIONS");
        conf.addAllowedMethod("POST");
        conf.addAllowedMethod("HEAD");
        conf.addAllowedMethod("PATCH");
        //允许的头信息
        conf.addAllowedHeader("*");
    // 添加映射路径
        UrlBasedCorsConfigurationSource urlSource = new UrlBasedCorsConfigurationSource();
        urlSource.registerCorsConfiguration("/**",conf);
        return new CorsFilter(urlSource);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值