我在使用whatwg-fetch npm从javascript节点模块访问.Net WCF提供的REST服务时遇到此问题。
请注意,上面的错误消息指的是一个看似空白的意外标记。
由于我无法弄清楚这是什么,我花了很多时间考虑其他可能的深奥问题,如CORS,身份验证,混合来自fetch API ++的Promises。
答案 0 :(得分:1)
原因是WCF REST服务通过此调用创建响应:
<pre></pre>
事实证明,当微软实施return WebOperationContext.Current.CreateTextResponse(
json,
"application/json; charset=utf-8",
Encoding.UTF8
);
编码时,他们选择使用UTF BOM标记作为json字符串。结果是JSON左大括号前面有三个字符:
Encoding.UTF8
,0xEF
,0xBB
。在ISO-8859-1或CP1252中查看时,它们看起来像0xBF
。
在这种情况下,我真的应该信任错误消息,但就在我开始添加身份验证的前一天,我收到了其他人的报告,说REST服务确实正在运行。然后我开始添加到目前为止缺少的测试 - 同时还添加了身份验证。在这个阶段,我意识到所有测试都失败了。并且 - 回溯并没有真正帮助......
作为旁注:似乎当代码在浏览器中运行时,它对BOM标记更加宽容。在节点中运行测试时,它似乎更挑剔......
解决方案是强制关闭BOM标记,如下所示: