400普通HTTP请求被发送到Node.js中的HTTPS端口

klh5stk1  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(152)

我的项目中有这样一个简单的代码:
文件api.js

const axios = require('axios');
require('dotenv').config();

let apiUrl = process.env.API_URL;

const axiosApi = axios.create({
    baseURL: apiUrl
})

axiosApi.interceptors.request.use(config => {
    config.headers['Accept'] = 'application/json'
    config.headers['X-Client'] = 'Crawl'   
    return config
})

const get = async (url) => {
    return await
        axiosApi
            .get(url,{
                crossDomain: true
            })
            .then(response => {
                return response?.data
            })
            .catch(error => {
                throw error
            })
}

const post = async (url, data) => {
    return await axiosApi
        .post(url, Array.isArray(data) ? [...data] : { ...data })
        .then(response => response?.data)
        .catch(error => {
           console.log("error")
        })
}

module.exports = { get, post }

文件app.js

const api = require('./Api')

api.get('/users').then(data => console.log(data))

如果我使用curl https://jsonplaceholder.typicode.com/users,我会看到数据。
但是当我使用node app.js时,我得到了这个ERR_BAD_REQUEST
400普通HTTP请求已发送到HTTPS端口
我读过很多类似的问题,但它们都是关于Nginx或Apache或其他Web服务器的。我正在连接到一个公共API,因此它与此无关。
会有什么问题呢?我该怎么办?
编辑:我注意到这个问题发生在设置代理或使用v2ray时
但我不明白为什么node.js会导致这个问题,但它与curl正常工作

2jcobegt

2jcobegt1#

你试过简化代码并添加一些调试吗?

const axios = require('axios').default;

async function getUsers() {
  try {
    const response = await axios.get(`https://jsonplaceholder.typicode.com/users`);
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}
getUsers()

https://stackblitz.com/edit/node-9xhiqf?file=index.js

相关问题