首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过NodeJS发送带有cookie的HTTP请求?

问如何通过NodeJS发送带有cookie的HTTP请求?
EN

Stack Overflow用户
提问于 2015-12-09 21:09:08
回答 1查看 1.6K关注 0票数 0

我希望通过NodeJS发送带有cookie的HTTP请求,以模拟以下"curl“命令的行为:

注意:这里是HTTPS而不是HTTP

代码语言:javascript
复制
curl -v --header "Referer: https://some-domain.com/accounts/login/" --cookie csrftoken=xxxxxssometokenxxxxx --data 'csrfmiddlewaretoken=xxxxxssometokenxxxxx&username=tom.rock&password=somepassword' https://some-domain.com/

我的当前代码如下所示,但我总是得到403

代码语言:javascript
复制
var request = require("request");
var querystring = require('querystring');

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
var endpoint = "https://some-domain.com/";
var username = "tom.rock";
var password = "somepassword";
var csrftoken = "xxxxxssometokenxxxxx";  // Guarantee the token is fresh

var form = {
    username: username,
    password: password,
    csrfmiddlewaretoken: csrftoken
};

request({
        "headers": {
            "Referer": endpoint + "accounts/login/",
            "Cookie": "csrftoken=" + csrftoken
        },
        "url": endpoint,
        "body": querystring.stringify(form),
        "method": "POST"
    }, function(error, response, body) {
        if (error) {
            console.log("Here is error:");
            console.dir(error);
        } else {
            console.log("Status code is " + response.statusCode);
        }
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-09 23:18:28

您得到403错误,不是因为cookie标题,而是因为缺少内容类型的标题。按照这种方式修改标头字段。

代码语言:javascript
复制
    "headers": {
        "Referer": endpoint + "accounts/login/",
        "Cookie": "csrftoken=" + csrftoken,
        'Content-Type': 'application/x-www-form-urlencoded'
    },

还为post负载的长度添加一个内容长度标题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34189019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档