关于我的设置的一般信息
目前,我正在构建一个使用反应的web应用程序和一个为这个web应用程序提供数据的nodejs API。这两个应用程序都托管在heroku.com上,并且彼此独立运行。我已经从一个不同的主机提供商购买了一个自定义域名,并使用heroku自定义域选项指向我的网站。
关于我的安装的技术细节
我正在经历的问题,
我一直在深入研究许多文档和教程,以便为react / NodeJS设置SSL,但却找不到一个关于如何为我的安装设置SSL /安全性的不错的教程。
我已经读过的教程:
我想实现什么?
我想要达到的目标是在React应用程序(前端)和NodeJS API (后端)之间建立一个安全的连接,这样这些应用程序之间的所有数据都是加密和安全的。另外,我希望我的自定义域(由与Heroku不同的主机提供商购买)是安全的,并强制使用https。
如有任何问题或其他资料,请随时提出!
发布于 2019-01-03 02:58:37
您试过在节点中使用https模块吗?
你可以这样做:
var express = require('express');
var https = require('https');
var http = require('http');
var app = express();
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);express()返回的应用程序实际上是一个JavaScript函数,用于将其传递给Node的HTTP服务器,作为处理请求的回调。这使得提供HTTP和HTTPS版本的应用程序具有相同的代码库变得很容易,因为应用程序不继承这些代码(它只是一个回调。
如果您正在使用应用程序,请打开您的终端并键入“”。这将创建一个包含所有静态文件的构建文件夹。
现在回到您的节点后端服务,并添加以下内容:
var express = require('express');
var path = require('path');
var https = require('https');
var http = require('http');
var app = express();
const options = {
  key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
  cert: fs.readFileSync("/srv/www/keys/chain.pem")
};
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
app.use(express.static(path.join(__dirname, 'build')));
app.get('/', function(req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});如果您使用react路由器为您的web应用程序处理路由,那么您将修改GET请求如下:
var express = require('express');
const path = require('path');
var https = require('https');
var http = require('http');
var app = express();
const options = {
  key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
  cert: fs.readFileSync("/srv/www/keys/chain.pem")
};
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
app.use(express.static(path.join(__dirname, 'build')));
app.get('/*', function(req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});发布于 2020-04-05 10:39:46
这不是一个复杂的问题,不要担心ssl,只需为Node.JS/Express创建自己的证书就够了。
React有一个内置的方法来执行api调用,
将这一行添加到您的React安装的package.json,
"proxy": "http://localhost:8000/"然后像这样调用api服务,
 //Generic API Call
 callApi = async () => {
    const response = await fetch('/api/hello');
    const body = await response.json();
    if (response.status !== 200) throw Error(body.message);
    return body;
  };
  // A Submit handler to proxy
  handleSubmit = async e => {
    e.preventDefault();
    const response = await fetch('/api/myrequest', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ post: this.state.post }),
    });
    const body = await response.text();
    this.setState({ responseToPost: body });
  };一切都很好。
https://stackoverflow.com/questions/54008965
复制相似问题