NodeJS+;使用fetch()表示:如何绕过;您的连接不是私人的”;用Javascript?

NodeJS+;使用fetch()表示:如何绕过;您的连接不是私人的”;用Javascript?,javascript,node.js,ssl,express,reactjs,Javascript,Node.js,Ssl,Express,Reactjs,目前,我已经设置了一个NodeJS+ExpressJS客户端服务器,它对后端服务器进行API调用。但是,每当我这样做时,我首先必须直接转到API后端服务器的URL并查看以下页面,然后转到Advanced->继续https://backendserver.com:8080 (不安全),以便能够在没有任何错误的情况下进行API调用 是否有办法始终允许它继续https://backendserver.com:8080而不必通过浏览器手动执行 下面是我如何使用fetch()进行API调用的: 我的No

目前,我已经设置了一个NodeJS+ExpressJS客户端服务器,它对后端服务器进行API调用。但是,每当我这样做时,我首先必须直接转到API后端服务器的URL并查看以下页面,然后转到
Advanced
->
继续https://backendserver.com:8080 (不安全)
,以便能够在没有任何错误的情况下进行API调用

是否有办法始终允许它
继续https://backendserver.com:8080
而不必通过浏览器手动执行

下面是我如何使用
fetch()
进行API调用的:

我的NodeJS+Express设置如下:

var express = require('express');
var cors = require('cors');
var path = require('path');
var config = require('../webpack.config.js');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var app = express();
var compiler = webpack(config);

app.use(cors());

app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));

app.use(webpackHotMiddleware(compiler));

app.use(express.static('./dist'));

app.use('/', function (req, res) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.sendFile(path.resolve('client/index.html'))
})

var port = 3000;

app.listen(port, function(error) {
  if (error) throw error;
  console.log("Listening to ", port);
})

这里通常只有一个合适的解决方案:使用浏览器信任的服务器证书

如果您有公共服务器,则需要从受信任的证书颁发机构获取证书。因此,这是一项很棒的(免费)服务,并与Express完美集成


如果您有一台专用服务器(如开发或测试服务器,或仅由少数浏览器使用的服务器),您可以使用自签名证书,并将其作为受信任的证书添加到浏览器或操作系统中。

这里通常只有一个合适的解决方案:使用浏览器信任的服务器证书

如果您有公共服务器,则需要从受信任的证书颁发机构获取证书。因此,这是一项很棒的(免费)服务,并与Express完美集成



如果您有一台专用服务器(如开发或测试服务器,或仅由少数浏览器使用的服务器),您可以使用自签名证书,并将其作为受信任的证书添加到浏览器或操作系统中。

为backendserver.com使用有效的证书:8080将自签名证书添加到受信任的存储(请参阅)或使用生成有效的证书。@JaromandaX抱歉,这是否需要由前端实现?因为我无法访问后端,我正试图找出如何通过代码实现绕过它,这样应用程序的每个用户都不必手动绕过它。@mallendeo有没有办法通过代码实现来做到这一点?因为,多个用户将在不同的计算机上使用该应用程序,并且不希望每个用户都手动绕过它。希望对实现进行编码,以便不同计算机上的任何用户都能自动绕过它。您希望绕过浏览器中的安全性-如果只是为您自己,那么很简单,请在浏览器接受的证书中添加一个例外-如果是为其他人,那么他们也需要这样做(祝您好运)为backendserver.com使用有效的证书:8080将您的自签名证书添加到受信任的存储(请参阅)或使用生成有效的证书。@JaromandaX抱歉,这是否需要由前端实现?因为我无法访问后端,我正试图找出如何通过代码实现绕过它,这样应用程序的每个用户都不必手动绕过它。@mallendeo有没有办法通过代码实现来做到这一点?因为,多个用户将在不同的计算机上使用该应用程序,并且不希望每个用户都手动绕过它。希望对实现进行编码,以便不同计算机上的任何用户都能自动绕过它。您希望绕过浏览器中的安全性-如果只是为您自己,那么很简单,请在浏览器接受的证书中添加一个例外-如果是为其他人,那么他们也需要这样做(祝您好运)对不起,在我接受答案并投票之前,我有几个问题。我对整个安全领域都是新手,所以如果我没有正确使用我的条款,请原谅。当您提到私有服务器时,您是指我向其发出API请求的后端API服务器吗?此外,此应用程序将由多个用户使用,因此每个用户都必须手动将受信任的证书添加到自己的浏览器中吗?如果是这样的话,有没有一种方法可以实现为代码,它可以做同样的事情,绕过
您的连接不是私有的
,这样每个用户就不必这样做?@LyManeug所说的“私有”是指“只被少数客户端使用”。但是,如果您的应用程序将被许多人使用,您必须从证书颁发机构获得证书,并使用该证书设置服务器,而不是我假设您现在使用的自签名证书。@LyManeug本质上说,要使连接私有,您需要使浏览器信任您的服务器证书。如果您从证书颁发机构获得证书,浏览器知道他们信任证书颁发机构,并且证书颁发机构信任您,因此浏览器将信任您的服务器。这是多个用户的内部使用,用于测试目的。那么,我怎样才能使浏览器信任我的服务器证书呢?我可以用代码而不是手动操作吗?“我的服务器”是指客户端服务器,对吗?@LyManeug你不能自动执行,因为这会破坏信任的全部目的。(如果您可以使用不受信任的服务器并自动使其受信任,那么这不是一个安全的系统)。但您通常会在浏览器设置中找到SSL证书列表,您可以在其中添加它(和的说明)。“服务器”是指你连接的服务器(你的API服务器)。对不起,在我接受答案并投票之前,我有几个问题。我对整个安全领域都是新手,所以如果我没有正确使用我的条款,请原谅。当您提到私有服务器时,您是指我向其发出API请求的后端API服务器吗?此外,此应用程序将由多个用户使用,因此每个用户都必须添加信任吗
var express = require('express');
var cors = require('cors');
var path = require('path');
var config = require('../webpack.config.js');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var app = express();
var compiler = webpack(config);

app.use(cors());

app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));

app.use(webpackHotMiddleware(compiler));

app.use(express.static('./dist'));

app.use('/', function (req, res) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.sendFile(path.resolve('client/index.html'))
})

var port = 3000;

app.listen(port, function(error) {
  if (error) throw error;
  console.log("Listening to ", port);
})