Мой проект Angular работает на другом порту, чем мой API-интерфейс (asp.net). Я использую прокси для маршрутизации всех http-запросов на внутренний веб-сервер, как показано ниже.
{
"/api": {
"target": {
"host": "localhost",
"protocol": "https:",
"port": 5001
},
"secure": false,
"logLevel" : "debug",
"changeOrigin": true
}
}
мой вариант угловых проектов:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "art-ng-core:build",
"host": "www.artngcore.com",
"port": 8500,
"sslKey": "key.key",
"sslCert": "server.crt"
},
"configurations": {
"production": {
"browserTarget": "art-ng-core:build:production"
}
}
},
Моя проблема здесь - статические файлы, обслуживаемые API, т.е. изображения.
<img src={{imagePath}}>
Мои статические файлы внутреннего интерфейса хранятся в другой статической папке " SystemData " с общим путем " Данные ".
Скажите, у меня есть этот файл с относительным путем: /Data/UserData/test.jpg
. если я предоставлю атрибуту src
относительный путь, URL-адрес изображения будет выглядеть как https://www.artngcore.com:8500/Data/UserData/test.jpg
, где он должен быть https://localhost:5001/Data/UserData/test.jpg
Как я могу прокси-вызов для статических файлов так же, как я сделал для вызовов Http?
на данный момент я обошел эту проблему, настроив свой API для предоставления полного URL-адреса вместо относительных путей, но я не уверен, является ли это обычной или хорошей практикой, когда дело касается обработки статических файлов.
Я сохраняю относительные пути в своей базе данных и запускаю следующий метод для генерации URL
public string GenerateUrl(string filePath, HttpRequest ctx) {
string physicalPath = this.GetRootPath() + filePath;
var url = physicalPath.Replace(Directory.GetCurrentDirectory (),$@"{ctx.Scheme}://{ctx.Host}").Replace(@"SystemData", @"Data");
return url;
}
Спасибо.