0

새로운 앵귤러 4 애플리케이션이 새로운 httpclient 게시와 함께 IE 11에서 작동하는 데 문제가 있습니다. 이 문제는 IE11에만 관련되어 있으며 Chrome에서 정상적으로 작동합니다.Internet Explorer 11 및 각 HttpClient 게시물에 polyfills 문제가 발생했습니다.

잘못된 문자 오류가 계속 발생합니다. enter image description here

내가 볼 수있는 것은 내가 서버에 보내는 포스트 본문입니다. 크롬 브라우저에서는이 같은 포맷 :

enter image description here

그리고

는 IE11에서 동일한 개체는 다음과 같이보고있다 :

enter image description here

수까지 이러한 기호 속성 엉망 있도록 오브젝트 그 서버에서 받아 들여지지 않겠습니까? 인터셉터를 사용하여 오류 메시지를 구문 분석하지 않으면 내부 서버 오류 (500)가 발생합니다.

하게 몸 =
{
FROMDATE : form.fromDepDate, // 날짜
TODATE : form.toDepDate, // 날짜

내가 본문에 보낼 지정하는 객체입니다 UserIds : userIds // 문자열 배열
}};

답변

0

나는 당신이 물어 본 것을 100 % 확신하지 못했습니다. 많은 앵귤러 사용자가 IE를 사용하는 데 문제가있는 것처럼 보입니다. 이 문제는 http 요청이 실제로 통과하지만 서버 응답을 구문 분석 할 수 없기 때문에 각으로 오류로 간주됩니다 (500 개 정도의 대화가있는 경우? 실제로 500 개의 내부 서버 오류가 발생하면 백엔드에서 문제 일 가능성이 큽니다)

500을 얻지 못했지만 위와 같이 동작이 빨라지면 이것은 각도 4 이상의 IE11 (및 기타)에있는 버그 인 것으로 나타납니다. HttpClient가 빈 200 응답을 구문 분석 할 수없는 것 같습니다.

버그는 angular repo에서 추적됩니다.

  • 하나의 가능성은 204 No Content을 대신 반환하도록 서버를 변경하는 것입니다 : 당신이 또는 여러 해결 방법을 업데이트하지 않습니다 수없는 경우에 작동하는 것, 각도 5.2.4에서 해결되었지만

    응답 본문이 비어있을 때

  • 또 다른 가능한 해결 방법은 HTTP 인터셉터를 사용하여 as compeek suggested 작업을 수행하는 것입니다.

    @Injectable() 
    export class EmptyResponseBodyInterceptor implements HttpInterceptor { 
    intercept(req: HttpRequest <any> , next: HttpHandler): Observable < HttpEvent <any>> { 
        req = req.clone({ 
         responseType: 'text' 
        }); 
    
        return next.handle(req) 
         .map((res) => { 
          if (res instanceof HttpResponse) { 
           if (res.body === 'OK') { 
            res.clone({ 
             body: null 
            }); 
           } else { 
            res = res.clone <any> ({ 
             body: res.body !== '' ? JSON.parse(res.body) : null 
            }); 
           } 
          } 
    
          return res; 
         }); 
    } 
    

    }

    :

이 내 솔루션입니다