CSP使用“ Content-Type:application / json”中断Ajax调用

时间:2019-12-07 13:47:08

标签: json ajax content-security-policy

我正在为应用程序实施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有关的任何内容。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

已解决。显然,发送带有json-request的CSP标头会破坏事情。

对于遇到此问题的任何其他人:CSP标头不应包含在ajax响应中。