(Ext / Js) ajax 跨域请求发送两次解决方案

本文介绍了CORS的简单请求与复杂请求区别,并详细讲解了与之相关的Access-Control-Allow-Origin、Access-Control-Allow-Credentials等关键字段。在实际项目中,Ext6.2.0与WebApi结合时遇到AJAX跨域请求发送两次的问题,通过设置useDefaultXhrHeader: false解决。提供了一种解决前端Ext store跨域请求的方案。
摘要由CSDN通过智能技术生成
    我的项目都是前后端分离,在用ajax请求的时候总是会发送两次请求,一次OPTIONS(预检请求),一次正常的POST(OR GET)。通过浏览器的开发者调试工具(network)可以看到options请求不会带上任何参数,返回null(其实返回值可以在后台设置)。第二条请求才是我们想要的真正的请求。

    这个问题可以说并不是个问题,浏览器发现跨域时,会附加一次options请求。去判断是否是安全的请求,也就是CORS。整个过程由浏览器自动完成,用户不会感觉得到。但是对于开发者来说,总是不喜欢浪费资源。下面我会介绍如何去减少或者避免OPTIONS请求;

浏览器将CORS分为两中请求:简单请求(simple request)和复杂请求(not-so-simple-request),两种处理方式是不一样的。

一、简单请求:
简单请求头会被加上Origin字段,用于服务器判断是不是允许内的请求域名;
二、复杂请求:
在发送POST前,发送一条预检请求(OPTIONS),请求头也会带上Origin字段;

不管是简单请求还是复杂请求,我们都一视同仁;

先介绍一些CORS相关的字段:
1、Access-Control-Allow-Origin
这个字段是必须的,它的值代表着允许的域名。可以是请求头的Origin值,也可以是*。

2、Access-Control-Allow-Credentials
这个字段可选,代表着服务器是否允许这个域名请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值