2016-11-23 3 views
-1

Итак, у меня есть 2 приложения, работающие на одном сервере. 1. На бэкэнд у меня есть Mean.js, который предоставляет услуги для выполнения операций CRUD. 2. На переднем конце я использую приложение IONIC, которое обеспечивает интерфейс пользователя.Как настроить обратный прокси-сервер на nginx, чтобы избежать проблемы с CORS для моего ионного и среднего приложения.

Передняя часть (Ionic приложение) работает на 81 и Backend на 3000.

Я пытался настроить обратный прокси-сервер для внутреннего интерфейса (узел/среднее) путем поиска в Интернете, но вратаря успеха.

Вот мой Nginx установка

server { 
    listen 80; 

    server_name meantodo.com; 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

enter image description here

ответ

0

Просто добавьте заголовок вашего экспресс-приложения, позволяющего ионную IP и порт сервера, как так:

app.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', 'http://yourIonicServerIp:port'); 
    res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); 
     next(); 
    }); 
+0

где в среднем приложении я это делаю? https://github.com/meanjs/mean config/lib/express.js в строке 50. Я скажу вам, если это сработает. –

+0

Я думаю, что он работает, но позвольте мне проверить и другие подобные apis ... Thx FRECIA –

+0

Надеюсь, дайте мне знать, если вы получите какую-либо ошибку, счастливое кодирование! – FRECIA

0

Я ничего не знаю об Ионном и Mean.js, но похоже, что вы работаете с тем же, что и я, с установкой React из 2-х сайтов, где один вызывает другой с POST или GET ,

Итак, во-первых, вы сказали, что ваш внешний интерфейс находится на порту 81, но он говорит, что он не может загрузить http://34.192.250.112/api/properties в ошибке. Это вызов 80-го порта. И вы говорите, что ваш бэкэнд, обслуживающий запросы, находится на 3000, так что вы уверены, что ваши операции на самом деле не на этом сайте? Вам нужно будет поставить либо :81, либо :3000 после 112, если это необходимо, если это в каком-то «ПОЛУЧЕНИИ», вы не делитесь. Или, может быть, это делает из-за этого listen 80, поэтому вам придется заменить его на listen 81 или listen 3000, в зависимости от того, где находится ваш apis.

Но при условии, что вы исправите это в своем вызове, а затем запустите аналогичную ошибку, вам нужно будет перейти в IIS на веб-сервере, предположив, что он размещен там (если не в IIS, я уверен там есть эквивалентное место в Tomcat или что вы используете, где я собираюсь вам сказать). На сайте, который вы пытаетесь вызвать, откройте HTTP-ответные заголовки. Добавить:

Name: Access-Control-Allow-Origin 
Value http://34.192.250.112:81 

Если запрос требует аутентификации, вам может понадобиться добавить:

Name: Access-Control-Allow-Credentials 
Value true 

Кроме того, если этого недостаточно, и вы все еще получаете ошибки, вы можете запустить Chrome с отключенной системы безопасности, перейдите на свой сайт и выполните операцию, которая вызывает «GET». В командной строке вы выполните:

cd C:\Program Files (x86)\Google\Chrome\Application 
chrome --disable-web-security --user-data-dir=C:/somefolder 

Затем перейдите на ваш сайт.