cookie |
您所在的位置:网站首页 › 跨域携带token › cookie |
不想多写,毕竟能参考的文档很多,个个都比我复制粘贴一遍好。 我就看文档瞎写下。 首先什么叫跨域,谁控制跨域。 浏览器处理跨域问题。如果当前访问站点 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 |