Angularjs的cookie问题

是这样的,我用angularjs做一个登录界面,然后登录之后需要跳转主界面,这个主界面向后端发起的操作都必须有这个用户登录的标记,即sessionid,但是由于我的登录界面和主界面是两个界面,所以主界面向后端发起的操作都报401错误,也就是未登录。请问怎么处理这种情况?
后端传过来的sessionid是保存在cookie中的,如图:

clipboard.png

我在angularjs中使用$cookies.JSESSIONID是undefined,这个不知道怎么回事?
其次,获取到之后又如何传给主界面呢?

阅读 3.1k
1 个回答

原来一开始就理解的方向就错了,cookie里面的sessionid是不需要程序员来操作的,浏览器自己会维护,除非是你自己设置的cookie。

这里实际的问题是cookie跨域问题,默认情况下,Cookie不包括在CORS请求之中。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。另一方面,开发者必须在AJAX请求中打开withCredentials属性。并且Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。

这里主要参考了阮一峰大佬的文章,大家可以看看,确实很有用。感谢大佬~~
http://www.ruanyifeng.com/blo...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题