【问题标题】:POST request to ExpressJS route works locally, but returns HTTP 405 error in production对 ExpressJS 路由的 POST 请求在本地工作,但在生产中返回 HTTP 405 错误
【发布时间】:2021-08-27 23:18:31
【问题描述】:

在我的 React 应用程序中,我使用 axios 向我的后端节点/快速应用程序发送请求。在我的本地环境中,当我使用如下所示的函数调用它时,一切正常:

await axios.post('/createproduct', createProductBody).then(res => console.log('Data send')).catch(err => console.log(err.data))

但是,在我将代码推送到生产环境后,这行代码返回状态码 405(见屏幕截图)

可能是因为我在package.jsonfile 中添加了"proxy": "http://localhost:3001" 行吗?我不太明白为什么这在locally 中有效,但在prod 中无效。

谢谢

【问题讨论】:

  • 这里有很多问题,你们部署在同一个域吗?你是如何部署你的快递应用的?它说 405,这意味着方法不支持。您是否确保您的快速应用程序应该收到发布请求?如果它在本地工作。这意味着在prod的同一个域中不存在相同的路由,那么部署一定有问题
  • 我搜索了 HTTP 代码 405,我认为它与您的托管有关。
  • 嗨,是的,我将它们部署在同一个域上。
  • 不完全确定我是如何部署它的,但我非常仔细地遵循本教程,如果它提供任何提示freecodecamp.org/news/…

标签: node.js reactjs express amazon-s3 axios


【解决方案1】:

根据以下输出,您的 AWS S3 存储桶未配置为允许POST

axios = require('axios')

function createProductBody() {
    return {}
}
async function stackOverflowQuestionNumber67929785() {
    await axios.post('https://editor.blankt.io/createproduct', createProductBody()).then(res => console.log('Data send')).catch(err => console.log(err))
}

stackOverflowQuestionNumber67929785();

打印:

response: {
    status: 405,
    statusText: 'Method Not Allowed',
    headers: {
      'content-type': 'application/xml',
      'transfer-encoding': 'chunked',
      connection: 'close',
      allow: 'HEAD, DELETE, GET, PUT',
      date: 'Fri, 11 Jun 2021 00:58:55 GMT',
      server: 'AmazonS3',
      'x-cache': 'Error from cloudfront',
      via: '1.1 cf2a58a1ade01b9796df7d87fe311e64.cloudfront.net (CloudFront)'
    }

查看allow 响应标头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多