SSL на Apache с Nodejs

Я работаю над приложением с nodejs и PHP вместе с Mysql

PHP это внешний интерфейс здесь nodejs бэкенд

Сейчас

Я создал форму и при создании формы

я отправляю ajax запрос в Nodejs

лайк

URL: http://example.com:8124/sign_in

Который работает нормально

Теперь проблема в том, что

Когда я включил SSL на Apache.

Теперь я не могу отправить запрос на узел.

это дает мне ошибку, как

Политика кросс-происхождения, загрузка небезопасного контента

Как решить эту проблему

Спасибо

0

Решение

Простой способ включить ssl на узле — использовать прокси перед вашим приложением:

var fs = require('fs');
var httpProxy = require('http-proxy');

var privateKey = fs.readFileSync('key.pem').toString();
var certificate = fs.readFileSync('cert.pem').toString();
var chainCertificate = fs.readFileSync('ca.pem').toString();httpProxy.createServer({
target: {
host: 'localhost',
port: ...your application port...
},
ssl: {
key: privateKey,
cert: certificate,
ca: chainCertificate
}
}).listen(...the port for ssl...);
1

Другие решения

Это не проблема с PHP, а с JavaScript (AJAX). Это потому, что вы пытаетесь загрузить содержимое с сервера, который не использует SSL, с веб-страницы, обслуживаемой через SSL.

Просто включите SSL также в приложении Node, и оно будет работать.

редактировать

Я не рекомендую создавать прокси-сервер в Node.js.
На самом деле это хорошая идея создать прокси-сервер перед каждое приложение Node.js Действительно, по соображениям безопасности большинство веб-сайтов, созданных с использованием Node.js, имеют обратный прокси-сервер Nginx. То есть: пользователи подключаются к Nginx (выбранному из Apache для лучшей производительности), а Nginx делает запрос к приложению Node.js.
При такой настройке вам на самом деле не нужно будет включать SSL в Node.js, если в Nginx включен SSL.

Чтобы использовать SSL непосредственно в Node.js, вам нужно добавить всего пару строк в файл app.js. Посмотрите этот ТАК вопрос: Как настроить сертификаты SSL для сервера express.js?

Если серверы находятся на одном и том же имени хоста (просто на другом порту), вам не понадобится другой сертификат SSL; если серверы находятся на другом имени хоста (например, поддомен) а также Ваш SSL-сертификат не является подстановочным, тогда вам понадобится другой сертификат.

Говоря о порте … Это правда, что HTTPS по умолчанию работает на 443, но вы можете изменить его, как хотите. Просто не забудьте указать это, например: https://example.com:8443/

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector