当前位置: 首页 > 知识库问答 >
问题:

Post请求在NodeJS中不起作用,对请求没有问题

周昊乾
2023-03-14

我试图使用Axios,因为它是NodeJS中唯一具有异步/等待功能的模块。

我已经在Python脚本中有一个POST请求,它工作得很好,我正在尝试适应NodeJS服务器。

但我阻止了我的第一次发帖请求。如果我直接与请求模块一起使用,它工作得很好,请参阅我的代码:

console.log("create session");
let data = {'uname': 'login', 'pass':  'password', 'module':'NSUser', 'op':'login','url':'%2Findex.php'}
let url = 'https://localhost:9000/user.php'
let headers = {'Accept': "application/html"}

//s = request.session
body = await request.post({url:url, headers:headers, form:data}, function(error, response, body){
  console.log("LOGIN");
 console.log(response);

});

使用Axios(或Axios实例,但稍后使用…)因为我需要保持我的会话(就像在Python中一样,它像一个符咒一样工作)。

     const config = {
      method: 'post',
      url: 'https://localhost:9000/user.php',
      headers:  {'content-type': 'application/x-www-form-urlencoded'},
      data: {uname:'login',
        pass:'password',
        module:'NSUser',
        op:'login',
        url:'/index.php'}
     }    
    axios(config)

而作为响应的主体,它并没有连接页面,而不是带有请求的代码。

什么我错了?我尝试用参数替换数据,但它是一样的......

如果需要,我有Firefox的CURL命令。

有关详细信息,请使用python

s = requests.session()
res = s.post(url, headers=headers, data=data)

我的s变量具有会话,并且可以请求连接的所有内容。

共有1个答案

赵高韵
2023-03-14

您说您正在发送表单编码数据:

headers:  {'content-type': 'application/x-www-form-urlencoded'},

…但将对象传递给Axios:

data: {uname:'login', …

...所以Axios将它编码为JSON,而不是表单编码的数据

见留档:

默认情况下,axios将JavaScript对象序列化为JSON。要改为以application/x-www-form-urlencoded格式发送数据,可以使用以下选项之一。

...

在node.js中,可以按如下方式使用querystring模块:

const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));
 类似资料:
  • 问题内容: 我正在尝试向Swift发出发布请求。我的目标是将accesstoken facebook发布到服务器,但不起作用。这是代码: 答案如下: 问题答案: 通过这种方式,您可以使用POST Web服务:

  • 我正在构建这个学校项目,我们必须在NodeJs和自由选择前端中创建自己的API。我写了以下代码:[在公共地图]app.js [这里是对本地服务器的请求]server.js [最后是带有输入字段的HTML,其中的值应与POST req]index.HTML一起发送 在函数addPoe()中,让newPoe用于测试目的。标题、作者和文本应来自表格。谁能看出我做错了什么? 编辑:在makeRequest

  • 在我的spring MVC应用程序中,我试图发出一个简单的Post请求,但由于请求的主体,它不起作用。我在params中得到了嵌套对象,Spring抛出了这个异常: 下面是我的对象DTO: 和: 我拿到了这些日志:

  • 这是我得到的错误: 通用域名格式。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN_对象,但在第1行第1列路径处为字符串$ 我从邮递员那里得到的JSON回复: 这就是我如何响应rest API(使用slim2框架)的响应: 回声响应方法: 调用API的方法: APIServie界面: 我如何获得实例: 我发布所有这些

  • 升级到iOS6.0版本后,ajax登录页面停止工作。看起来像是jquery$发出的ajax post请求。即使添加了随机的querystring参数并将Cache-control设置为“no-cache”(这些都是在网上找到的解决cache问题的方法),ajax仍然在safari中缓存。第一次登录尝试很好,但在第二次登录请求注销后,浏览器不会从服务器获得任何响应体。只有头球。 这同样适用于iOS6

  • 问题内容: 我有一个脚本,可以在按下当前元素时添加一个输入字段元素。当我使用innerHTML时,它将替换当前内容,这不是我想要的。所以我想appendChild应该添加而不是替换,但是它不起作用。这是我的剧本 和我的HTML内容。 还有我的addfile.php文件。 有输入吗?同样,innerHTML可以工作,appendChild不能工作。谢谢。 问题答案: parent.appendChi