我的问题:我的浏览器没有设置会话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的东西并进行某种代币交换吗?
其他有趣的说明:
谢谢!
答案 0 :(得分:0)
看起来这是一个安全问题。服务器不允许在其他域的浏览器上设置cookie。因此,业界提出了一个解决方案:JSON Web Tokens。我在一两个小时后实现了它,它看起来效果很好。