我的问题:我的浏览器没有获取会话cookie设置。这会导致对服务器的所有请求不相互关联(例如,1)进行身份验证,然后2)获取一些数据)。设置浏览器cookie
背景/背景:
我建立具有移动和网络侧到它的产物。我开发了这个网站,它的工作很好,所以现在我正在使用Cordova开发移动应用程序(所有这些都是JavaScript)。我想为我的网站使用与移动应用程序相同的后端。
当我测试所有内容时,我只想在浏览器中运行我的应用程序,所以我不必一直模拟iOS设备,而是在浏览器中获得更好的调试工具。为了做到这一点,我在包含所有html/css/js文件的目录上运行一个简单的http服务器。在我开始与服务器交互之前,一切似乎都很好。
我的设置:
服务器上的本地主机上运行: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是下蛋而不是生完孩子:)
由于唯一的哺乳动物!
所以你的问题基本上是为什么不是在移动浏览器中设置cookie?我们可以看到应该设置cookie的代码吗? – AlexMA
@AlexMA,实际上它不能在桌面上的实际浏览器中工作,这就是我遇到问题的地方。 Cookie设置逻辑位于[黑盒](https://github.com/expressjs/session)中。但我在想,我可能没有正确使用黑匣子。 – kentcdodds
也许尝试用npm模块“cookies”设置一些简单的非会话cookie。应该花一点时间检查cookie是否可以工作。 – AlexMA