2017-02-14 10 views
0

whatwg-fetch npmを使用して、javascriptノードモジュールから.Net WCFによって配信されるRESTサービスにアクセスしているときに、この問題が発生しました。SyntaxError:JSONの位置0で予期しないトークンが発生しました

上記のエラーメッセージは、空白のように思われる予期しないトークンを参照していることに注意してください。

私はこれが何であるか分からなかったので、CORS認証のような他の可能性のある難解な問題を考えて、APIのフェッチからプロミスをミックスしました。

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

は、Microsoftは、彼らが作ることを選んだEncoding.UTF8エンコーディングを実装したときに、それがでJSON文字列を付加ことが判明:

答えて

1

原因これのは、WCF RESTサービスは、この呼び出しを介して応答を作成していたということでしたUTF BOMマーカー。その結果、JSONの開きブレースの前に3文字が表示されます。 0xEF,0xBB、​​です。これらは、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マーカーを強制的にオフにしました

関連する問題