当前位置: 首页 > 面试题库 >

在重定向之前设置Express响应头

冯茂实
2023-03-14
问题内容

我正在实现一个站点登录名,该登录名采用电子邮件/密码组合,检索API令牌,并将其返回给用户以存储(加密)在localStorage中。

目前,在成功发布到/login,该应用程序将用户重定向到索引页,附有作为查询条件,像这样的令牌:

login.post('/', function(req, res) {
    ...checking password...

    Auth.getToken(user, function(err, token) {
        res.redirect('/?token=' + token);
    });
});

这可以正常工作,但我希望保持URL尽可能整洁,并将令牌设置为标头:

login.post('/', function(req, res) {
    ...checking password...

    Auth.getToken(user, function(err, token) {
        res.set('x-access-token', token);
        console.log(res._headers);
            // --> {'x-powered-by': 'Express', 'x-access-token': <token>}
        res.redirect('/');
    });
});

console.log-ing res._headers显示标题设置正确,但是当我req.headers将请求登录到索引页面时,它没有显示:

{ host: 'localhost:3000',
  connection: 'keep-alive',
 'cache-control': 'max-age=0',
 accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'upgrade-insecure-requests': '1',
 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',
 referer: 'http://localhost:3000/login',
 'accept-encoding': 'gzip, deflate, sdch',
 'accept-language': 'en-US,en;q=0.8',
 cookie: 'ifusr=crwj; _ga=GA1.1.1933420201.1409901705',
 'if-none-match': '"1195161647"' }

任何建议表示赞赏!


问题答案:

设置标头在这里不起作用,因为重定向将执行新的http请求,您可以使用express-
session
来存储auth令牌,并在需要时获取它

req.session.accessToken = token


 类似资料:
  • 基于我之前的问题,我现在需要在响应中添加一个标题。 根据留档,我可以简单地将标头和另一个属性添加到对象。 当我对此进行测试时,它似乎没有携带标头值。 根据这篇文章,为重定向请求设置标题是不可能的。所以除了重定向,也许我应该试试别的? 有什么想法吗?

  • 例如,我试图向www.testjson发出GET请求。com/json,但响应是从不同的域URL检索的,例如www.testjson。com/confirmJson。 Spring mvc是否支持此功能,特别是restTemplate.exchange功能。 我目前正在做这类事情,但我得到一个500状态码(内部服务器错误),无法找出到底是什么导致了错误。 那么RestTemplate真的可以管理重

  • 问题内容: 我正在尝试执行以下操作: 来自客户 在明确的根源 结果传回 似乎如果我确实从jquery发布,重定向将不起作用。有人知道强制其重定向的方法吗? 问题答案: 浏览器不会在ajax响应上重定向时重定向窗口。使用javascript重定向浏览器。 例如,在服务器中将新站点作为内容发送。 在客户中

  • 我有Omnipay功能完美地在我的支付网关,但当系统重定向到PayPal我得到以下屏幕上重定向到PayPal之前: 重定向到https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout 我想知道的是,如果有人知道如何停止页面显示并直接重定向到没有这个中间页面的PayPal。我的重定向代码如下:

  • 基本上:我如何访问或确定以前请求的URL? 我真的不想求助于传递查询字符串参数,除非我真的不得不这样做。理想情况下,最好能够将< code>history集合作为< code>Router组件的一部分,类似于< code>backbone.history!

  • 问题内容: 我在更新面板中更新时使用以下代码显示消息 它工作正常。 但是,当我在使用重定向后,它将加载页面而不显示消息。我希望用户看到该消息,并在单击“确定”后应重定向。 问题答案: 使用javascript显示警报,然后使用相同的方法进行重定向: