设置浏览器cookie

我的问题:我的浏览器没有得到会话cookie设置。 这导致对服务器的所有请求不相互关联(例如1)进行身份validation,然后2)获取一些数据)。

背景/环境:

我正在构build一个有移动和networking端的产品。 我已经开发了这个网站,它的工作很好,所以现在我正在使用Cordova的移动应用程序(所有这些都是JavaScript)。 我想为网站使用与移动应用程序相同的后端。

在testing一切时,我只想在浏览器中运行我的应用程序,所以我不必一直模拟iOS设备,而是在浏览器中获得更好的debugging工具。 为了做到这一点,我运行一个简单的http服务器上的目录,所有我的html / css / js文件。 一切似乎都很好,直到我开始与服务器交互。

我的设置

服务器在localhost:3000上运行。 该cordova应用程序正在本地主机上:3001服务。 当移动应用程序加载时,它所做的第一件事是打到http://localhost:3000/api/v1/auth/isAuthenticated ,它返回{isAuthenticated: true|false} 。 端点所做的是无关紧要的。 与此相关的是,浏览器中的移动应用程序不会获取sessionId cookie,因此所有到localhost:3000上的服务器的请求都具有不同的sessionId,因此即使我能够正确地进行身份validation,下一个请求与authentication用户没有关联,因为它没有sessionId cookie。

我的问题:解决这个问题的好方法是什么? 我如何将cookie设置在刚刚触及端点的浏览器上? 我是否应该使用像oauth2orize这样的东西,并做一些令牌交换?

其他有趣的笔记:

  • 我正在使用express.js会话。 实际上,我已经用最新的3.x版本和4.x的候选版本来尝试这个了。 这个伎俩也没有。
  • 当我在iOS模拟器中模拟移动应用程序时,一切都很好(只是不是开发的最佳位置)
  • 我使用CORS来允许我的localhost:3000响应来自localhost:3001的请求。 请求正在工作,这只是没有设置的cookie是问题。
  • 鸭嘴兽是产卵的唯一哺乳动物,而不是分娩:)

谢谢!

看起来这是一个安全问题。 服务器不允许在其他域的浏览器上设置cookie。 所以业界已经提出了一个解决scheme: JSON Web Tokens 。 我在一两个小时之后就实现了这个,看起来效果很好。