在Node JS中设置访问控制头,以便在Angular前端

时间:2018-03-10 17:50:47

标签: node.js angular

我正在构建一个MEAN堆栈应用程序,我在后端有Node,前端有Angular。我正在进行用户身份验证,我在Angular中有一个登录页面。登录信息设置为节点后端,使用bcryptjs我将密码与存储在MongoDB数据库中的加密密码进行比较。然后,我使用JSON Web令牌创建一个令牌,我通过设置标题将其发送给Angular。我让它在我的电脑上运行。但我不得不这样做。

在我的NodeJS Express应用程序中,在开发模式下,我的节点服务器在端口3000上运行,我的Angular服务器在4200上运行。我必须设置:

res.setHeader('Access-Control-Expose-Headers', 'x-auth');

允许Angular使用以下命令访问包含令牌的x-auth标头:

let token = response.headers.get('x-auth')

如果没有在NodeJS上设置曝光标题,标题就不会显示在Angular应用上。 要在响应中设置标头,在处理身份验证的NodeJS方法中,我使用通常的:

res.setHeader('x-auth', token);

所以,这是我的问题: 如果在Heroku上部署,这将如何工作?当客户端尝试登录时,我是否需要设置('Access-Control-Expose-Headers','x-auth')以便客户端可以接收NodeJS服务器发回的令牌?既然,这是两个独立的域名?我是否需要在生产中设置此标题,因为我现在只在开发时这样做。我尝试在我的计算机上以生产模式运行整个应用程序,它运行时不需要标题,但我从同一个域访问它,因此没有CORS问题。

我还尝试通过POSTMAN将登录POST请求发送到NodeJS服务器。我在使用或不使用expose头的情况下返回x-auth令牌。那么POSTMAN请求与Angular发送的请求有何不同?

0 个答案:

没有答案