【问题标题】:net::ERR_SSL_PROTOCOL_ERROR on http POST to express serverhttp POST 上的 net::ERR_SSL_PROTOCOL_ERROR 到快递服务器
【发布时间】:2020-03-05 15:22:50
【问题描述】:

我正在尝试从反应客户端发布到本地主机上的快速服务器,我在谷歌浏览器中收到此错误。

反应应用程序:http://localhost:3000 快递应用:http://localhost:5000

POST https://localhost:5000/upload net::ERR_SSL_PROTOCOL_ERROR

我没有任何 SSL https 自签名证书,但我需要吗?我已经在我的 express 应用程序的一个目录中使用 create-react-app 来引导我的前端,所以我不知道某处的 webpack 设置是否试图将 http 作为 https 处理这个特定操作?

我的 express js 应用程序没有使用任何引导程序,我将在下面包含我的服务器文件以供参考。

const express = require ('express')
const bodyParser = require ('body-parser')
const port = 5000

var app = express()
var cors = require("cors");

app.use(cors())
app.use(bodyParser())
app.listen(port, () => console.log(`Example app listening on port ${port}!`))



app.post('/upload', (req,res)=>{
    if (req.files === null ){
        return res.status(400).json({message: 'no image uploaded please try again'})
    }else{
        const file = req.files.file
        let body = req.body
        res.json({body})
    } 
})

我知道关于这个问题有很多问题,但它们不相关或没有为我提供任何见解。我已经尝试确保端口也允许通过我的防火墙。我也清除了浏览器缓存。

【问题讨论】:

  • “我没有任何 SSL https 自签名证书,但我需要吗?” 简答: 是的。 长答案:您需要为您的 localhost 环境提供一个自签名证书,并且需要将其添加到您的 Windows 证书存储区(如果您使用的是 Microsoft Windows)。如果没有在证书存储中添加证书,您仍然会收到一条错误消息,指出证书是由无法验证的 证书颁发机构 签名的。部署到生产环境后,您需要使用来自有效 CA 的证书(通过 Let's Encrypt 免费或付费)

标签: node.js reactjs express ssl


【解决方案1】:

我遇到了同样的问题并将 URL 更改为 http://localhost:5000/upload 而不是使用 https://localhost:5000/upload。

【讨论】:

    【解决方案2】:

    这已在多个帖子中讨论过

    默认情况下,您不能在浏览器上调用 localhost 请求,但您可以禁用安全性

    在这里查看:Disable same origin policy in Chrome

    【讨论】:

    • 谢谢!我不知道这个原则。
    • 不,你绝对可以使用localhost。而且,同源政策不是这里的问题。在仅 HTTP 的服务器上使用 HTTPS 是。
    【解决方案3】:

    我也遇到了同样的问题,我将 URL 更改为 http://localhost:5000/path 而不是使用 https://localhost:5000/path

    它对我有用。

    【讨论】:

    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多