Я работаю над приложением с nodejs и PHP вместе с Mysql
PHP это внешний интерфейс здесь nodejs бэкенд
Сейчас
Я создал форму и при создании формы
я отправляю ajax запрос в Nodejs
лайк
URL: http://example.com:8124/sign_in
Который работает нормально
Теперь проблема в том, что
Когда я включил SSL на Apache.
Теперь я не могу отправить запрос на узел.
это дает мне ошибку, как
Политика кросс-происхождения, загрузка небезопасного контента
Как решить эту проблему
Спасибо
Простой способ включить 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...);
Это не проблема с 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/