跨域以及解决跨域的几种方式

 我来答
舒适还明净的海鸥i
2022-06-07 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:69.3万
展开全部

跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能 同源 使用的限制。

同源策略 是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议 + 域名 + 端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
常见的跨域场景:

对于简单请求,浏览器会直接发出CORS请求,具体的就是在头信息中,增加一个 Origin 字段。

非简单请求是那种对服务器有特殊要求的请求,譬如 put delete 方法,或者 Content-Type 字段类型是 application/json 的,非简单请求在正式通信前,会增加一次请求,称为预检请求,也就是 options 方法。

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的 XMLHttpRequest 请求,否则就报错。

与简单请求不同的是, option 请求多了2个字段:
Access-Control-Request-Method :必须字段,用来列出浏览器的CORS请求会用到哪些HTTP方法。
Access-Control-Request-Headers :该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段。

服务器收到"预检"请求以后,检查了 Origin 、 Access-Control-Request-Method 和 Access-Control-Request-Headers 字段以后,确认允许跨源请求,就可以做出回应。

表明服务器支持的所有跨域请求的方法。

表明服务器支持的所有头信息字段,不限于浏览器在"预检"中请求的字段。

表示是否允许发送认证信息(Cookie)。

指定本次预检请求的有效期,单位为秒,允许缓存。在缓存期间,不用发出另一条预检请求。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式