验证后,我无法从我的应用程序的前端请求数据 - 但只能通过服务器端视图和Postman我可以在登录后进行后续数据请求,或者通过在Postman中验证我的用户然后制作数据在我的应用程序中请求。
首先,我是服务器端的新手。
我有一个SailsJS后端我正在使用REST。使用LocalStrategy创建和验证用户工作正常 - 实际上,甚至使后续数据请求工作正常 - 但不是通过我的应用程序中的AJAX。
我可以使用Postman或服务器端视图来访问数据,例如/list
;在我的应用程序中进行身份验证后发出请求不起作用 - 除非我跳回Postman并登录,然后跳回我的应用程序并重新发送请求。
我注意到我的应用中的set-cookie
在第一次身份验证请求和/list
请求之间有所不同。
如果有必要,我可以展示一些代码,但这似乎是我在制作经过身份验证的AJAX请求时缺少一个非常高级的基本概念。
修改
我的前端是在另一个域上 - 当我的用户界面在localhost:1337
上运行时,Sails会在localhost:8100
上运行。
这是/api/config/cors.js
的样子:
module.exports.cors = {
allRoutes: true,
origin: '*',
credentials: true,
// methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
// headers: 'content-type'
};
我在前端使用了角度,后续请求正在使用withCredentials: true
- 我是否也需要将此添加到登录请求中?我是否必须在请求中同时发送用户名/电子邮件?
如何在登录后允许我的所有后续数据验证请求?
答案 0 :(得分:5)
默认情况下,如果您的前端应用程序的来源与后端应用程序the AJAX requests will not include the session cookie不同。
如果你是using jQuery:
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
此选项必须用于所有AJAX请求,因此服务器可以将它们视为属于同一会话。
您还必须configure the server side才能允许CORS请求。