2017-02-14 5 views
0

whatwg-fetch npm을 사용하여 자바 스크립트 노드 모듈에서 .Net WCF가 제공하는 REST 서비스에 액세스하는 동안이 문제가 발생했습니다.SyntaxError : JSON 위치 0에서 예상치 못한 토큰

위의 오류 메시지는 공백 인 것처럼 보이는 예기치 않은 토큰을 참조합니다.

나는 CORS 인증과 같은 다른 가능한 비전 문제를 고려하면서 많은 시간을 보냈지 만 가져 오기 API에서 약속을 섞어 버렸습니다. ++.

return WebOperationContext.Current.CreateTextResponse(
    json, 
    "application/json; charset=utf-8", 
    Encoding.UTF8 
); 

이 밝혀 마이크로 소프트가 Encoding.UTF8 인코딩을 구현 할 때 그것으로 JSON 문자열을 앞에 추가하기 위해 선택했다고이의

답변

1

원인는 WCF REST 서비스가이 호출을 통해 응답을 만드는 것을이었다 UTF BOM 표식. JSON 여는 중괄호 앞에 0xEF, 0xBB, 0xBF 세 개의 문자가 있습니다. ISO-8859-1 또는 CP1252에서 볼 때이 모양은 입니다.

이 경우 나는 정말로 오류 메시지를 신뢰할 수 있었지만 인증을 추가하기 바로 전에 REST 서비스가 실제로 작동하고 있다고 다른 사람들이보고 한 보고서를 받았습니다. 나는 지금까지 누락 된 테스트를 추가하기 시작했다. 또한 인증을 추가했다. 이 단계에서 나는 모든 테스트가 실패한 것을 깨달았다. 그리고 - 역 추적은 실제로 도움이되지 않았습니다 ...

사이드 노트로 : 코드가 브라우저에서 실행될 때 BOM 마커와 관련하여 더 용서가되는 것처럼 보입니다.

// Note, false to avoid BOM marker which breaks some clients not expecting BOM for utf-8 
var utf8 = new UTF8Encoding(false); 
return WebOperationContext.Current.CreateTextResponse(
    json, 
    "application/json; charset=utf-8", 
    utf8 
); 
: 노드에서 테스트를 실행하는 경우 그러나 솔루션이 같은 인코딩을위한 BOM 마커를 강제로했다

... 훨씬 더 까다로운 것 같다

관련 문제