Angular front-end размещен на порте 4200. Back-end Express.js размещен на порте 4000. Оба размещены на моем настольном компьютере.
Теперь я на своем мобильном телефоне Android и перехожу к192.168.1.X: 4200 для просмотра приложения Angular.Приложение Angular загружается и работает, но данные не загружаются с сервера Express.js.С моего настольного компьютера запрос на сервер Express.js работает нормально, и приложение Angular в браузере отображает правильные данные.Доступ к 192.168.1.X: 4000 (API для данных) в браузере обоих устройств возвращает ожидаемый JSON.
Я подключил телефон к настольному компьютеру через USB для отладки.Вот ошибка в консоли Chrome DevTools:
GET http://localhost:4000/ net::ERR_CONNECTION_REFUSED
и
ERROR
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "http://localhost:4000/", ok: false, …}
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for http://localhost:4000/: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "http://localhost:4000/"
__proto__: HttpResponseBase
Вкладка «Сеть» в Chrome DevTools ...
Сеть:
Name: localhost
Status: (failed)
Type: xhr
Initiator: zone-evergreen.js:2952
Сетевые заголовки:
General
Request URL: http://localhost:4000/
Referrer Policy: no-referrer-when-downgrade
Request Headers
Provisional headers are shown
Accept: application/json, text/plain, */*
Origin: http://192.168.1.2:4200
Referer: http://192.168.1.2:4200/
Save-Data: on
Sec-Fetch-Mode: cors
User-Agent: Mozilla/5.0 (Linux; Android 9; SM-G965W) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36
Код Express.js:
const express = require('express'),
cors = require('cors');
const app = new express();
app.use(cors());
app.get('/', async (req, res) => {
res.json({data: "a lot of data"});
});
app.listen(4000, () => {
console.log('Back-end listening on port: 4000')
});
Итак, запрос к серверу Express.js не выполняется при доступе кУгловое приложение через телефон, но не через настольный компьютер.