我正在为应用程序实施CSP策略。
如果我尝试使用Content-Type: application/json
检索网址;我得到一个空的""
responseText
。
与CSP违规一样,控制台中没有错误。
使用CSP时产生空结果的示例ajax调用:
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "/something/555.json", true);
xhttp.send();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText)
}
}
没关系,如果该URL产生一个json-object或文本。
它也不取决于Content-Security-Policy
标头的内容。我试图允许所有可能的指令,只是一个空的头。 chrome,firefox和safari也有同样的问题。
请求确实通过了服务器。而且,如果我尝试获取不存在的页面,则控制台会正确显示404。没有.json的网址,例如.html,.jsonn,.foo或无格式,不会产生任何问题,因为它们会生成application/text
模仿类型。
我机智。 CSP文档没有特别提及与json或mimetypes有关的任何内容。我在做什么错了?
答案 0 :(得分:1)
已解决。显然,发送带有json-request的CSP标头会破坏事情。
对于遇到此问题的任何其他人:CSP标头不应包含在ajax响应中。