#node.js #apache
#node.js #апач #apache
Вопрос:
У меня есть сайт на PHP https://example.com. У меня есть поддомен приложения MEAN stack http://team.example.com . Он использует API, предоставляемые nodejs на порту 3000.
Я столкнулся с проблемой при запуске приложения наhttp://team.example.com где API Nodejs недоступен .
добавлено следующее в файл конфигурации Apache:
Прокси-канал /узел/http://localhost:3000 /
Я отправляю запрос api со стороны angular со следующим:
team.example.com/node/users/login
API-интерфейсы успешно достигнуты через postman, но сбой в браузере
Как я могу решить эту проблему?
Комментарии:
1. В файле конфигурации Apache, в теге ‘VirtualHost *.80’ я добавил следующее. — ProxyPass / node / localhost: 3000 Я также отправляю запросы в Node Api с example.com/node /. Теперь это работает отличным образом.
Ответ №1:
Я думаю, у вас проблема с CORS, я предполагаю, что вы используете express framework в своей службе узлов. Смотрите следующий пример кода, чтобы узнать, как решить проблему CORS для браузера.
var http = require('http');
var express = require('express');
var app = express();
app.use(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');
next();
});
app.post('/test-cors', function (req, res) {
res.set('Content-Type', 'application/json');
res.send(JSON.stringify({ 'status': "OK" }));
});
// Create http server and run it
var server = http.createServer(app);
server.listen(8081, function() {
console.log("Listening on 8081");
});
В приведенном выше примере кода вам нужно сосредоточиться на следующих строках кода:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', "*");
res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
Ответ №2:
Цитата из блока
Для использования прокси-сервера вы должны включить модуль прокси в apache. После этого перезапустите apache.
Если вы используете ОС Ubuntu, выполните следующую команду
прокси-сервер sudo a2enmod amp;amp; sudo a2enmod proxy_http
После этого вы должны бежать
перезапустить службу sudo apach2.