我前端用的vue框架单页面,后台.net coreapi ;然后利用html的cros允许跨域资源共享,前端credentials:true,后端Access-Control-Allow-credentials:true,origin不是设置的*号,问题来了:
在本地开发ip访问时,cookie domain='', path='/',chrome和firefox可以,ie edge不行,但是看到ajax返回的response里有set-cookie,但是没有写到本地;
还有就是我在本地host 127.0.0.1 www.test.com 后,,,cookie domain设置为test.com或者.test.com后,所有浏览器都不行,ajax请求返回连set-cookie都没有了;
难道是html cors兼容性问题?还是有哪些没注意到?
经过一夜失眠的代价,终于搞清楚了,没办法,我这个人心里装不得事;
原因很直接,自己没有弄清楚原理,从表面去想问题了,有时候发现坐在电脑狂调试也没有,有必要静下心来举一反三,推敲每个字,而真正点醒我是w3c 的一句话:cors(跨域资源共享),点睛之笔:共享。
原来认为的是跨域,例如前端www.a.com,接口www.b.com,跨域后调用接口后www.b.com会设置域名为a.com的cookie,我就在接口哪里设置cookie的时候把域名设置为a.com,这种想法是错误;
因为所谓共享,就是把cookie.domian='b.com'共享给www.a.com,并不是自动去设置www.a.com下域名的cookie,所以之前我一直在接口那边设置cookie的域为a.com,所以没有效果;
改成接口域后,发现在浏览器里打开www.a.com能看到域为b.com的cookie;
这次真是自己把自己给绕进去了,开发最忌讳想当然了,哎~~~;不过这种跨域cookie js还是无法访问的,只好把令牌用一个cookie存着,然后设置httponly,然后www.a.com调用登录接口后设置域为a.com的域名保存登录信息,这样单页应用刷新能保持登录状态
之前遇到过.是那个httponly造成的.