cordova http请求附带sessionid

利用cordova+vue生成的项目,http请求用的是vue-resource
逻辑是说用户首先登录,登录之后会返回一个sessionid,在之后的请求当中都要带有这个sessionid。
项目是根据webpack把vue的生成文件放到cordova的www目录当中。
现在我在vue中通过浏览器可以实现,但是通过生成到www的文件,用cordova跑起来的时候,在登录之后其他的请求看到全部没有sessionid,不太清楚是因为vue的问题,还是因为cordova的问题,改怎么解决?

阅读 3.9k
1 个回答
新手上路,请多包涵

这是Cordova的问题。

你所说的sessionid应该是服务端响应随响应头放在set-cookie里面的吧?

在ionic serve开发模式下,cookie是生效的,因为前端启动了一个服务器访问本地www的资源;而在cordova中,并不是启动服务来访问的,而是通过file协议访问的,就类似你直接电脑打开一个html文件(并非启动服务),通过抓包可以看到与后台交互的Origin是file://,而这时服务端返回的set-cookie就无法自动维护cookie了(因为没有一个具体的域)

解决办法可以尝试用h5的localStorage来代替,也就是每次请求都在请求体附上sessionid参数(可以封装在请求层统一添加这个参数),服务端拦截app的接口,通过sessionid从session池取出session,就可以进行类似常规的web开发的cookie和session的操作了

希望对你有用

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