设置浏览器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 。 我在一两个小时之后就实现了这个,看起来效果很好。
- 将CookieStore转换为string:具有编码/解码值的pb
- NightmareJS:如何设置cookie?
- 为什么使用setRequestHeader进行xmlhttprequest时,无法设置cookie和set-cookie头?
- 无法使用Express 3.0在Node.js中设置cookie'expires'或'maxAge'
- 如何通过WebSockets连接到socket.io时发送cookie?
- 在Node.js HTTP POST请求中设置cookie jar
- cookie不会在第一次请求时发送
- 从nodejs expresslogin到cakephp
- 我可以从服务器端而不是浏览器端的ejs页面访问cookie吗?