2

Мое приложение (http://localhost:8099) делает некоторые запросы CORS на https://api.parse.com/, что я хочу прокси-серверу для моего местного api http://localhost:8077 для целей тестирования. Может ли это быть достигнуто с grunt-connect-proxy?Прокси-запросы CORS с ворчанием на localhost

Вот моя конфигурация прокси-сервера grunt-connect, которая не работает, как я ожидаю.

connect: { 
     dev: { 
     options: { 
      port: 8099, 
      hostname: 'localhost', 
      base: 'build/', 
      livereload: false, 
      keepalive: true, 
      middleware: function (connect, options) { 
      var proxy = require('grunt-connect-proxy/lib/utils').proxyRequest; 
      return [ 
       // Include the proxy first 
       proxy, 
       // Serve static files. 
       connect.static('build/') 
      ]; 
      } 
     } 
     }, 
     proxies: [ 
     { 
     context: ['api/'], //same domain api requests, proxy works fine! 
     host: 'localhost', 
     port: 8077 
     }, 
     { 
     context: ['api.parse.com/'], //cors, proxy is not working 
     host: 'localhost', 
     port: 8077, 
     changeOrigin: true 
     }] 

    } 

→ grunt serve 
Proxy created for: api/ to localhost:8077 
Proxy created for: api.parse.com/ to localhost:8077 

Так, в основном проксировании это работает для api/ запросов (тот же домен), но полностью игнорируется для Корс запросов к api.parse.com/. Идеи?

+0

ли у меня решение? Я также сталкиваюсь с той же проблемой –

+0

@prudviraju, в конце концов, я отказался от идеи проксирования, я просто изменяю конечную точку api во время выполнения в соответствии с NODE_ENV – Dziamid

+0

, можете ли вы поделиться дополнительной информацией, пожалуйста, –

ответ

1

Когда вы сделаете запрос к api.parse.com, браузер подключится к фактическому серверу parse.com. grunt-connect-proxy входит в изображение только тогда, когда запросы на сервер приложений, который является localhost: 8099 в вашем случае.

Все остальное: localhost: 8099 - это удаленный/перекрестный домен для вашего приложения (даже localhost: 8077), и вы можете использовать прокси-сервер grunt-connect для подключения к этим серверам на стороне сервера, а на стороне клиента вы все равно будете делать запросы на свой собственный сервер.

Какой сервер подключается, когда прокси-сервер настроен с использованием контекста.

proxies: [ 
     { 
     context: ['api/'], 
     host: 'localhost', 
     port: 8077 
     }, 
     { 
     context: ['parse/'], 
     host: 'api.parse.com' 
     }] 

Таким образом, с учетом выше конфигурации

localhost:8099/api -> Уилл получил localhost:8077

и

localhost:8099/parse -> пойдет на api.parse.com

+0

Разве 'options.host' не означает, что хост прокси-сервера ** на **? – Dziamid