3

我创建了一个程序,以便我可以测试我的后端 API 服务器/登录功能。我使用超级代理向服务器发送请求,一切正常,除了登录会话与我的实际浏览器登录会话无关。

当我 POST 到 /login 时,我会得到一个响应头,其中包含一个字段“Set-Cookie”,告诉我设置 cookie 值。当这个 cookie 时,我可以使用后端服务器保持登录状态。但显然,尽管 POST /login 成功,superagent 并没有为我设置 cookie 值。

那么如何与浏览器共享会话/cookie 信息?

var request = require('superagent');

request.post('http://localhost:3000/login')
  .send({email: 'test@gmail.com', password: 'test@gmail.com'})
  .end(function(err, res){
    console.log(err)
    console.log(res.header)
  })
4

1 回答 1

3

我假设您是从 以外的来源发出此请求localhost:3000,否则浏览器应该已经在发送请求的 cookie。

Superagent 使用XMLHttpRequest浏览器中的对象来发出 http 请求。默认情况下,跨域请求不发送 cookie。为了XMLHttpRequest发送 cookie/身份验证标头,您必须将withCredentials请求的属性设置为true. Superagent让这一切变得简单。只需.withCredentials()根据您的要求使用该方法:

var request = require('superagent');

request.post('http://localhost:3000/login')
  .send({email: 'test@gmail.com', password: 'test@gmail.com'})
  .withCredentials()
  .end(function(err, res){
    console.log(err)
    console.log(res.header)
  })
于 2015-07-01T16:36:08.687 回答