【问题标题】:Sending post formData with axios doesn't work, but with request does用 axios 发送 post formData 不起作用,但用 request 发送
【发布时间】:2020-07-08 13:59:45
【问题描述】:

我正在尝试从 request 迁移到 axios,因为请求已被弃用。
假设 url 'https://www.example.com' 收到一个包含登录信息的表单数据的 post 请求,并在成功时打印 'Logged in' ,否则打印 'Could not log in' (出于隐私原因,我无法共享 url)。 我有以下代码,它使用 axios 并打印“无法登录”:

axios = require('axios')
FormData = require('form-data')
form = new FormData()
form.append('email', 'example@gmail.com')
form.append('password', '1234')
axios({
    method: 'post',
    url: 'https://www.example.com',
    data: form
}).then(function (response) {
    console.log(response['data']); // Prints "Could not log in"
}).catch(function (error) {
    console.log(error);
})

我还有以下代码,它使用请求并打印“登录”:

request = require('request')
request.post({
    url: 'https://www.example.com',
    method: 'POST',
    formData: {
        'email': 'example@gmail.com',
        'password': '1234'
    }
}, function(error, response, body) {
    console.log(body); // Prints "Logged in"
})

为什么操作使用request而不是axios?

【问题讨论】:

    标签: javascript node.js axios node-request


    【解决方案1】:

    这是请求代码的输出:

    content-length: 288
    content-type: multipart/form-data; boundary=--------------------------539399892261259576142530
    
    ----------------------------539399892261259576142530
    Content-Disposition: form-data; name="email"
    
    example@gmail.com
    ----------------------------539399892261259576142530
    Content-Disposition: form-data; name="password"
    
    1234
    ----------------------------539399892261259576142530--
    

    这是 Axios 代码的输出:

    content-length: 288",
    accept: application/json, text/plain, */*
    content-type: application/x-www-form-urlencoded
    user-agent: "axios/0.19.2
    
    ----------------------------076596858609798080293678
    Content-Disposition: form-data; name="email"
    
    example@gmail.com
    ----------------------------076596858609798080293678
    Content-Disposition: form-data; name="password"
    
    1234
    ----------------------------076596858609798080293678--
    

    尝试在 Axios 中添加此选项:headers: {'Content-Type': `multipart/form-data; boundary=${form._boundary}` }

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2019-01-04
    • 2021-08-14
    • 2019-04-06
    • 1970-01-01
    • 2018-10-07
    • 2012-11-09
    相关资源
    最近更新 更多