2014-11-17 2 views
0

http_server 다트 패키지로 일부 파일을 보내고 처리하는 데 문제가 있습니다. 메소드 "processRequest"는 본문을 처리 할 때 예외를 발생시킵니다. catch되지 않은 오류 : HttpException : 토큰 처리되지 않은 HTTP 엔터티다트 언어 및 http_server 패키지 : 문자 "&"처리시 예외

다음과 같이 내가 "processRequest라는"전화 했어 :이 예외

이 예외는 모두 ISO-8859-1 및 UTF 발생
HttpBodyHandler.processRequest(request, defaultEncoding: Encoding.getByName("ISO-8859-1")).then((body) { 
     (...) 
    }, onError: _printError); 

-8은 본문에 "&"문자가 포함 된 경우에만 적용됩니다. 이 문제를 해결할 방법이 있습니까?

답변

0

이것은 http_server 다트 패키지의 버그로 밝혀졌습니다. 우리는 multipart/form-post 값에서 HTML 엔티티 값을 디코딩하려고합니다. HTML 엔터티의 구문 분석이 잘못되어 & 문자가있는 값이 작동하지 않습니다.

나는 multipart/form-post 값의 HTML 엔티티 구문 분석을 제거한 https://codereview.chromium.org/730203008 픽스를 만들었습니다.

크롬, 파이어 폭스와 사파리 형태로 & #xxxxx를 HTML 엔티티 (사용할 수있는 브라우저

;. 속성 accept-charset="latin1"가 HTML form 요소에 설정되어있는 경우 경우에 따라 양식 값에 대한 하나의 사례이다 그러나이 경우 &에. 대한 입력 문자가 너무 일반적인 복호화가 불가능한 부호화되지 않는다. 상기 언급 된 수정이 자동 HTML 엔티티 디코딩을 제거한다.

은 UTF-8 Content-Type 경우에 사용되게 할 form 요소 accept-charset 설정하지 양식을 호스팅하는 HTML 페이지의 크기는 text/html; charset=utf-8입니다. 일반적으로 모든 UTF-8을 사용하면 문제가 줄어 듭니다.

+0

sgjesse, 패치로 문제가 해결되었으므로 이제 "&"문자가 포함 된 본문을 처리 할 수있게되었습니다. 감사! – Felipe

+1

버그는 http_server 패키지의 0.9.5 버전에서 수정되었습니다. – sgjesse