所以我有一个像http://someIp:3000这样的node.js服务器。是否可以在没有获取域名并在端口80上运行的情况下安装https?我问这个问题的原因是我有一个运行在https上的php网站,当我尝试与我的节点服务器通信时,它抱怨你请求了一个不安全的XMLHttpRequest端点。
答案 0 :(得分:0)
是的:
var fs = require('fs');
var https = require('https');
var express = require('express');
var socket = require('socket.io');
var storage = require('node-persist');
var port = 8443;
var sslOptions = {
pfx: fs.readFileSync('cert/cert.pfx'),
passphrase: "Node2015"
};
var app = express();
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, *');
next();
});
var server = https.createServer(sslOptions, app);
答案 1 :(得分:0)
您应该将运行PHP的Web服务器配置为使用反向代理连接到NodeJS服务器(然后两者都可以通过相同的主机名和端口访问),或者使用正确的CORS头配置NodeJS。
我认为在您的方案中,反向代理将更容易配置。将NodeJS配置为仅允许localhost https连接,然后将Apache配置为代理请求。