You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
原文地址: #2
技术交流: https://fiora.suisuijiang.com/
这篇文章将解答以下疑问:
能设置或读取子域的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
使fetch带上cookie
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
axios 设置 withCredentials
使axios带上cookie
https://github.com/axios/axios/blob/master/README.md
jQuery 设置 withCredentials
https://yq.aliyun.com/articles/610080
The text was updated successfully, but these errors were encountered: