cookie

您所在的位置:网站首页 跨域携带token cookie

cookie

2023-04-03 08:30| 来源: 网络整理| 查看: 265

不想多写,毕竟能参考的文档很多,个个都比我复制粘贴一遍好。

我就看文档瞎写下。

首先什么叫跨域,谁控制跨域。

浏览器处理跨域问题。如果当前访问站点 a.com,a.com上的脚本 a.js 尝试请求 api.b.com ,则出现跨域。跨的是域名(domain)。

跨域请求按是不是简单请求分为两种情况。

非简单请求:

预检请求(pre-flight),询问指定站点的跨域策略正式请求

简单请求则跳过预检。

预检中,服务器告诉浏览器自己的跨域策略:允许什么域名访问,允许以什么方法请求,是否允许附带身份验证等...

那么 cookies 能跨域吗?

答案可能比较奇怪,能。对于简单请求,浏览器不会预检,只要在 xhr 设置标志位 withCredentials,就能附带 cookies 发出 xhr 请求。

当附带 cookies 的 xhr 发出后,服务端可以用 Access-Control-Allow-Credentials 来控制浏览器要不要把响应体返回给 js 。如果没有设置 Access-Control-Allow-Credentials 则浏览器不会吧响应返回给发送者。

要让 cookies 跨域还有个要求就是 Access-Control-Allow-Origin 不能是 *,这也要求了服务器必须显式指定允许的跨域来源。

那 token 怎么实现的跨域呢?

首先还是要跨的目标要允许你跨。设置 Access-Control-Allow-Origin。如果 token 放在 HTTP Header 里则可能导致产生一个预检请求,如果放在 Cookies 里则可能不会产生预检。但最终都是要受到跨域策略限制的。

参考:

跨域资源共享(CORS) - MDN



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3