CORS跨域请求

什么是CORS

首先得知道什么是浏览器的同源策略?从浏览器获取html页面开始,我们从一台服务器(ip+端口+http协议)中获取了html文档

在html文档中使用ajax技术,通过xhr对象发送网络请求,那么这个xhr的源即是这个HTML文档的归属服务器,如果有条件可以在orgin:xxx看到

浏览器拒绝不同源的内容相互发送请求,但是有时候为了需要还是想要实现跨域请求,这就有了cors

Cors实现

如何实现cors?实现跨域也就是同另一台服务器(准确来说是另一个源,毕竟还有端口号的限制)进行交流,服务器可以决定一个资源是否能够被跨域访问到

也就是决定权掌握在了服务端。

至于浏览器又做了什么?浏览器会对你的请求进行判断,区分简单请求和需要预检的请求

简单请求和预检请求

简答请求限制条件有点多,可以自行去MDN看看
在这里插入图片描述
除去简单请求之后就是预检请求,预检请求存在的目的要说一下,请求有安全性之分,也就是是否会影响到服务器的数据,很多请求都是不安全的,为了防止这样的事情出现,所以发送请求前先发送一个options方法的请求,看看服务端支持那些域的请求以及请求方法等信息

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

Cors和身份验证相关

通常发送请求都会带上cookie,那么跨域请求是否支持cookie相关的验证工作呢?

一般来说,浏览器在执行跨域相关的操作的时候是不会带上cookie之类的,如果是实在需要带上cookie,需要在跨域阶段做说明

同样的分两种请求讨论,第一种是简单请求
简单请求没有预检操作,直接设置xhr.withCredentials=ture就能让浏览器带上cookie

但是服务器可能不认你浏览器私自的操作,如果服务器端的响应中未携带 Access-Control-Allow-Credentials: true,浏览器将不会把响应内容返回给请求的发送者。

第二种是带预检操作的请求
发送options请求,在收到服务器响应的Access-Control-Allow-Credentials: true首部之后来携带cookie

但是使用了与身份验证相关的字段之后,又会代理一些限制,比如说
![在这里插入图片描述](https://img-blog.csdnimg.cn/b17ecb5e300f4cc985ce50f4f6f12fd1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc2RLZHF3ZWFz,size_20,color_FFFFFF,t_70,g_se,x_16
也就是相关的响应不能直接使用通配符*了,而是要指明具体的内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值