设置浏览器cookie

时间:2014-03-28 13:26:34

标签: node.js cookies cordova express session-cookies

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

背景/上下文:

我正在构建一个具有移动和Web端的产品。我开发了这个网站并且它工作得很好所以现在我正在使用Cordova处理移动应用程序(所以它都是JavaScript)。我想为移动应用程序使用相同的后端,就像我对网站一样。

虽然我正在测试所有内容,但我想在浏览器中运行我的应用程序,因此我不必一直模拟iOS设备,而是在浏览器中获得更好的调试工具。为此,我在包含所有html / css / js文件的目录上运行一个简单的http服务器。在我开始与服务器交互之前,一切似乎都很有效。

我的设置

服务器在localhost:3000上运行。 Cordova应用程序正在localhost:3001上提供。当移动应用加载时,它首先执行的是http://localhost:3000/api/v1/auth/isAuthenticated,它返回{isAuthenticated: true|false}。端点的作用是无关紧要的。相关的是浏览器中的移动应用程序没有设置sessionId cookie,因此对localhost:3000上的服务器的所有请求都有不同的sessionId,因此即使我能够正确地进行身份验证,我做的下一个请求与经过身份验证的用户没有关联,因为它上面没有sessionId cookie。

我的问题:解决此问题的好方法是什么?如何在刚刚访问端点的浏览器上设置cookie?我应该使用类似oauth2orize的东西并进行某种代币交换吗?

其他有趣的说明:

  • 我正在使用express.js会话。我实际上已尝试使用最新的3.x版本和4.x版本候选版本。也没有诀窍。
  • 当我在iOS模拟器中模拟移动应用程序时,一切都很好(只是不是开发的最佳位置)
  • 我正在使用CORS来允许我的localhost:3000响应来自localhost:3001的请求。请求正在运行,只是没有设置的cookie就是问题。
  • platypus是唯一产卵但不生育的哺乳动物:)

谢谢!

1 个答案:

答案 0 :(得分:0)

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

相关问题