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

    我的项目都是前后端分离,在用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
这个字段可选,代表着服务器是否允许这个域名请求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值