#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.