URL-адрес углового перехватчика не обновляется новым URL-адресом, добавленным к исходному

#angular #http #interceptor

Вопрос:

Привет, я новичок в перехватчиках, и я хотел перенаправить НЕКОТОРЫЕ запросы на другой домен более или менее, потому что доступ к порту другой. Но я не могу заставить перехватчик работать, вот мой код для перехватчика :

 @Injectable()
export class CustomHttpInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log("initial request: ", req)
    const url = '10.0.0.211:8080/Vanta/exports/';
    req = req.clone({
      url: url   req.url
    });
    console.log("Dupe Req: ", req.url)
    return next.handle(req);
}
 

теперь URL-адрес const здесь статичен для случая использования, но изначально он будет выводиться из адресной строки,

вот результат этого: введите описание изображения здесьтаким образом, у Dupe Req есть правильный URL-адрес, но в команде get localhost (или каков бы ни был исходный URL-адрес, т. Е.: если он начинается с 10.0.0.211, он становится http://10.0.0.211/10.0.0.211:8080/Vanta/exports/chemistry-800133-2021-09-22-08-43-56.csv»,
почему URL-адрес не переопределяется тем, что, как я думал, было бы http://10.0.0.211:8080/Vanta/exports/chemistry-800133-2021-09-22-08-43-56.csv

Ответ №1:

HttpRequest не содержит хоста, если Вы редактируете URL-адрес, хост не изменяется. Ваш первоначальный запрос является http://localhost:4200/chemistry... , и вы изменяете только url часть запроса.

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

1. Каков был бы правильный способ редактирования хоста? в конце концов, все, что я хочу сделать, это изменить/добавить порт на хост до’/’, чтобы это было (используя URL, а не локальный хост) « 10.0.0.211 **:8080**/vanta/exp…

2. Как Вы выполняете http-вызов ? У вас есть настроенный прокси-сервер ?

3. Эм, я не: это.http.get(имя файла,{ Тип ответа: ‘большой двоичный объект’}).подписка …. я думал, что это будет простая загрузка файла с другого порта

4. Также могу я добавить, что URL-адрес перед номером порта является динамическим…

5. Самым простым способом достижения Вашей цели будет создание нового HttpRequest вместо его клонирования const httpRequest = new HttpRequest(req.method, 'http://10.0.0.211:8080/Vanta/exports/chemistry-800133-2021-09-22-08-43-56.csv');