【发布时间】:2015-02-10 02:09:17
【问题描述】:
我在节点中尝试了 3 个不同的 http 库
- 节点请求
- 节点请求
- 结针
所有 3 个库都无法从我的响应中获取我的 set-cookie
请求
15:32:52 - WARN - now testing with request
{ 'x-powered-by': 'Express',
'content-type': 'application/json; charset=utf-8',
'content-length': '4591',
date: 'Thu, 11 Dec 2014 14:32:52 GMT',
connection: 'keep-alive' }
针
15:32:52 - WARN - now testing with needle
{ 'x-powered-by': 'Express',
'content-type': 'application/json; charset=utf-8',
'content-length': '4591',
date: 'Thu, 11 Dec 2014 14:32:52 GMT',
connection: 'close' }
请求
15:32:52 - WARN - now testing with requestify
{ 'x-powered-by': 'Express',
'content-type': 'application/json; charset=utf-8',
'content-length': '4591',
date: 'Thu, 11 Dec 2014 14:32:52 GMT',
connection: 'keep-alive' }
这是带有 wget 的结果标题
Connecting to localhost (localhost)|127.0.0.1|:8000... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Date: Thu, 11 Dec 2014 14:38:49 GMT
Cache-Control: public, max-age=0
Last-Modified: Thu, 11 Dec 2014 09:56:58 GMT
ETag: W/"7c2-2140188116"
Content-Type: text/html; charset=UTF-8
Content-Length: 1986
set-cookie: session=s%3AHI2alIkPOxVLXgJCymvAPbTZt1urIpEE.dBB7ZrpWjKAkwSALBVgbyJtRq9ZABMq9VJh%2F3XT6r8A; Path=/; Expires=Thu, 11 Dec 2014 15:08:49 GMT; HttpOnly
Connection: keep-alive
Length: 1986 (1.9K) [text/html]
如果这有帮助,这是我的请求中的标头
var commonHeaders = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'fr',
'Cache-Control': 'no-cache',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'User-Agent': 'request'
};
虽然 firefox、chrome 和 wget 可以获得完整的标头,但我无法使用 node 进行身份验证。 是 Node 的问题吗?我应该在 Python 中这样做吗?
编辑:
我试图删除通过节点发布的数据,我也有与 wget 相同的响应。 当我使用浏览器并执行登录操作时,它会返回我的 json + set-cookie。
为什么节点不可能做到这一点?
【问题讨论】:
-
我认为您正在请求两个不同的 URL/请求。 wget 看到
text/html和其他标头,而节点请求看到application/json和更少的标头。 -
是的,这是正确的,如果我删除了我的请求中发布的数据,我还会收到来自 node.js 的 setCookie。但它是 statusCode 401 和用户或重定向到登录。问题是,它应该返回一个 set-cookie,如果我使用浏览器的登录操作,我可以看到它
标签: node.js http cookies httpresponse setcookie