запрос axios выдает ошибку connect EHOSTUNREACH. заголовок ответа по умолчанию-src ‘self’

#express #proxy #content-security-policy #self #ehostunreach

#экспресс #прокси #content-security-policy #self #ehostunreach

Вопрос:

Привет, я работаю над приложением SSR с express. при выполнении запроса сервер визуализации (работающий на localhost: 3000) отправляет запрос на сервер api (работающий на localhost: 3001) для хранения сеансов начального пользователя. но при отправке запроса он выдает эту неизвестную ошибку в этой функции loadFromSessionStorage

Часть моего обработчика маршрута. он выдает ошибку в запросе axios.get

 const isServer = (typeof window === 'undefined') || (!window.document);

  if (isServer) {
    axios.defaults.headers = { cookie: req.get('cookie') || '' };
  }

  const loadFromSessionStorage = async () => {
    try {
      const res = await axios.get(`localhost:3001/session`)
      if (res) {
        return {
          user: res.data
        }
      }
    } catch (err) {
      if (err.response.data.sessionNotFound) {
        return {};
      }
      console.log("Unknown error from loading session storage")
      console.log(err);
      return;
      // TODO: 500
    }
  }
  

и обнаруженный объект err выглядит следующим образом
введите описание изображения здесь

Ошибка: подключение EHOSTUNREACH 0.0.11.185:80 — локальное (192.168.219.101:56794)

 address:"0.0.11.185"
code:"EHOSTUNREACH"
config:Object {adapter: , transformRequest: Object, transformResponse: Object, …}
errno:"EHOSTUNREACH"
message:"connect EHOSTUNREACH 0.0.11.185:80 - Local (192.168.219.101:56794)"
port:80
request:RedirectableRequest {_writableState: WritableState, writable: true, _events: Object, …}
response:undefined
stack:"Error: connect EHOSTUNREACH 0.0.11.185:80 - Local (192.168.219.101:56794)n    at internalConnect (net.js:857:16)n    at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)n    at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1004:9)n    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:62:10)"
syscall:"connect"
  

Я понятия не имею об этой ошибке. Я искал это, и я получил этот ответ, и попробовал это. https://github.com/axios/axios/issues/1514
по сути, это говорит о том, что я установил для моей переменной окружения http_proxy , https_proxy значение «», и я сделал это с моей конфигурацией .bash и .zshrc и попытался

 npm config delete http-proxy
npm config delete https-proxy
  

тоже. но он все еще выдает эту ошибку во время запроса. это запрос инструмента разработчика моего браузера (Chrome) и ответ на этот запрос

Запрос

 GET / HTTP/1.1
Host: localhost:3000
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: connect.sid=s:FLr3gvuCNhnyuDPciCFDIg9JFOjU blah blah
  

и ответ

 HTTP/1.1 500 Internal Server Error
X-Powered-By: Express
Content-Security-Policy: default-src 'self'
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 398
Date: Sat, 02 Mar 2019 14:48:25 GMT
Connection: keep-alive
  

есть идеи, почему это происходит?? и я не смог это исправить, но мне также интересно, почему мы должны устанавливать переменную окружения http_proxy для этой проблемы? поскольку это просто запрос между другим портом, я думаю, прокси не имеет к этому никакого отношения. любые объяснения или идеи будут оценены

Ответ №1:

Вы пробовали ставить http:// перед localhost в запросе Axios?

Комментарии:

1. Я полагаю, это связано с тем, что Axios по умолчанию предполагает, что вы используете тот же domian, на котором он установлен, используя относительный URL. Поэтому, если вы хотите отправить запрос в другой домен (т. Е. на ваш сервер API), вам необходимо включить http:// для указания абсолютного URL.