博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cookie的设置、读取以及是否自动携带问题
阅读量:6117 次
发布时间:2019-06-21

本文共 1794 字,大约阅读时间需要 5 分钟。

原文出处:

 
这篇文章将解答以下疑问:

  1. 能设置或读取子域的cookie吗?
  2. 客户端设置cookie与服务端设置cookie有什么区别?
  3. 同域/跨域ajax请求到底会不会带上cookie?
     

    能设置或读取子域的cookie吗?

     

    不行! 只能向当前域或者更高级域设置cookie

例如 client.com 不能向 a.client.com 设置cookie, 而 a.client.com 可以向 client.com 设置cookie

读取cookie情况同上

 

客户端设置cookie与服务端设置cookie有什么区别?

 

无论是客户端还是服务端, 都只能向自己的域或者更高级域设置cookie 例如 client.com 不能向 server.com 设置cookie, 同样 server.com 也不能向 client.com 设置cookie
 
服务端可以设置 httpOnly: true, 带有该属性的cookie客户端无法读取
 
客户端只会带上与请求同域的cookie, 例如 client.com/index.html 会带上 client.com 的cookie,
server.com/app.js 会带上 server.com 的cookie, 并且也会带上httpOnly的cookie
 
但是, 如果是向服务端的ajax请求, 则不会带上cookie, 详情见第三个问题
 

同域/跨域ajax请求到底会不会带上cookie?

 

这个问题与你发起ajax请求的方式有关
 
fetch在默认情况下, 不管是同域还是跨域ajax请求都不会带上cookie, 只有当设置了 credentials 时才会带上该ajax请求所在域的cookie, 服务端需要设置响应头 Access-Control-Allow-Credentials: true, 否则浏览器会因为安全限制而报错, 拿不到响应
 
axios和jQuery在同域ajax请求时会带上cookie, 跨域请求不会, 跨域请求需要设置 withCredentials 和服务端响应头
 

fetch 设置 credentials
By default, fetch won't send or receive any cookies from the server, resulting in unauthenticated requests if the site relies on maintaining a user session (to send cookies, the credentials init option must be set).Since Aug 25, 2017. The spec changed the default credentials policy to same-origin. Firefox changed since 61.0b13.

使fetch带上cookie

fetch(url, {    credentials: "include", // include, same-origin, omit})
  • include: 跨域ajax带上cookie
  • same-origin: 仅同域ajax带上cookie
  • omit: 任何情况都不带cookie
    参考:
     
    axios 设置 withCredentials
    // withCredentials indicates whether or not cross-site Access-Control requests, should be made using credentials//  default: withCredentials: false

     

    使axios带上cookie
    axios.get('http://server.com', {withCredentials: true})

    参考:

     

    jQuery 设置 withCredentials
    $.ajax({method: 'get',url: 'http://server.com',xhrFields: {    withCredentials: true}})

    参考链接:

转载于:https://blog.51cto.com/laok8/2326432

你可能感兴趣的文章
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
网易跟贴这么火,背后的某个力量不可忽视
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
linux系统安装的引导镜像制作流程分享
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>