https://blog.csdn.net/u010564430/article/details/70772014
我们如果需要获取服务器返回的cookie,是拿不到的,
因为ionic自己的域名为http://localhost/8100,而我们自己的域名肯定不是这个。
我们要读取的其实是自己服务器传来保存在浏览器的cookie,但是ionic App只能读取本地域名,即http://localhost/的。所以是不能从浏览器存储里读取的。
若真要获取cookie,在没有http-only属性前提下,在http请求 response的headers里可以获取到:
this.http.request(new Request(this.options))
.toPromise()
.then(res => {
console.log("Http-Response==" + JSON.stringify(res.json()));
let cookie =res.headers['Set-Cookie']));
onSuccess(res.json(), context);
})
.catch(this.handleError);
let cookie =res.headers['Set-Cookie']));
可以得到Set-Cookie里的数据。
XMLHttpRequest.withCredentials 属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制(cross-site Access-Control)请求。在同一个站点下使用withCredentials属性是无效的。
此外,这个指示也会被用做响应中cookies 被忽视的标示。默认值是false。
如果在发送来自其他域的XMLHttpRequest请求之前,未设置withCredentials 为true,那么就不能为它自己的域设置cookie值。而通过设置withCredentials 为true获得的第三方cookies,将会依旧享受同源策略,因此不能被通过document.cookie或者从头部相应请求的脚本等访问。
所以设置了withCredentials 为true 之后, 请求都会默认带上cookie, 不需要其他额外的操作, 唯一要注意的是跨域的问题
image.png
网友评论