浏览器内部是怎么携带cookie到后台的?
1.前端访问后台http接口时,后台可以获取到cookie,前端携带的cookie是浏览器自行处理添加上的?还是需要前端手动编写相关代码处理的?
比如window.location.href="url"这一句,是否有携带cookie?
ajax库的请求,withCredential为true时携带cookie,库的内部代码是否与浏览器内部已经处理过cookie的相关数据的,内部大概是怎么处理的呢?
2.当浏览器禁用掉cookie,是指访问后台时不再携带cookie,还是当后台返回cookie时,浏览器不再存储到硬盘?
如果是不再存储到硬盘,那么通过url重写的机制携带session id,session id是怎么被浏览器保存的?
禁用掉cookie,url重写的机制是浏览器自发处理的,还是需要前端代码在进行http请求时手动处理?
回答:
cookie
是由浏览器管理,存储在内存或磁盘的数据。前端可以利用JavaScript
操作document
对象创建、读取、修改、删除cookie
,服务端可以利用HTTP
响应头的set-cookie
字段设置cookie
,cookie
不是由前端携带的。
当JavaScript
操作XMLHttpRequest
对象使浏览器发起HTTP
请求时,区分同源和非同源:
同源请求:XMLHttpRequest
把当前域下可读取的所有cookie
都打包到HTTP
请求头的Cookie
,服务端也是通过解析HTTP
请求头的Cookie
来获取相关数据的。
跨域请求:默认不携带cookie
,此时希望HTTP
请求仍携带cookie
就需要把XMLHttpRequest.withCredential
设置为true
,同时服务端也要设置Access-Control-Allow-Origin
允许被跨域请求,否则无效。
window.location.href="url"
本质上就是让浏览器向<url>
发起一次Get
请求,所以此时浏览器如果有存储了该域下的cookie
则携带。
当浏览器禁用了cookie
,禁用前已经存在的cookie
仍保存着,但是发起的HTTP
请求不会携带cookie
。禁用后尽管HTTP
响应头中有set-cookie
,浏览器也不会存储。
最后一点我不确定你的意思是不是说session id
携带在url
的后面。禁用cookie
之后,如果没有使用其他浏览器存储方案,比如sessionStorage
和localStorage
,此时浏览器无法保存session id
。
然而,不管浏览器是否禁用了cookie
,url
携带的session id
都是由js
处理的:
const id = 'sessionid'window.location.href=`https://segmentfault.com/apiurl?sessionId=${id}`
以上是个人理解,有不对的地方请多指教
回答:
符合同源策略,自动带上
https://developer.mozilla.org...
回答:
1,前端自行决定是否携带cookie,fetch credentials选项可以配置,默认携带同源cookie
2,浏览器禁用后,会存,但是请求不会携带
以上是 浏览器内部是怎么携带cookie到后台的? 的全部内容, 来源链接: utcz.com/p/944557.html