当前位置:  开发笔记 > 编程语言 > 正文

资源被解释为Document但在Chrome Developer Tools中使用MIME类型application/json警告进行传输

如何解决《资源被解释为Document但在ChromeDeveloperTools中使用MIME类型application/json警告进行传输》经验,为你挑选了2个好方法。

我有以下代码片段,它使用jQuery Form插件将表单发布到服务器(在ajax中).

  var options = {
    dataType: "json",
    success: function(data) { 
      alert("success");
    } 
  }; 

  $form.ajaxSubmit(options);

表格:

:
:

ajax实现工作正常.但是我收到了警告

资源解释为Document但使用MIME类型application/json进行传输

在Chrome开发者工具中.我想找出为什么警告,甚至更好的解决方法.

我改为使用$.post而且神奇地从那时起错误就消失了.我不知道为什么$.post有效,但不是$form.ajaxSubmit.如果有人可以提供他们的解释,这将是伟大的.至少,这个问题已得到解决.以下是新代码.

var url = $form.attr("action");
$.post(
  url, 
  $form.serialize(), 
  function(data) {
    alert("success");
  },
  "json"
); 

小智.. 21

我遇到了同样的错误.对我有用的解决方案是:

从服务器端,在返回JSON响应时,更改content-type:text/html

现在浏览器(Chrome,Firefox和IE8)不会出错.



1> 小智..:

我遇到了同样的错误.对我有用的解决方案是:

从服务器端,在返回JSON响应时,更改content-type:text/html

现在浏览器(Chrome,Firefox和IE8)不会出错.


我不同意.内容类型标题应与实际内容匹配,否则您可能会冒不了解客户端行为的风险.如果要发送JSON响应,则将content-type设置为text/html是没有意义的.您的客户需要发送正确的Accepts标头,详见[另一个答案](/sf/ask/17360801/)

2> 小智..:

由于请求HTTP标头,通常会标记此类警告.特别是Accept请求标头. HTTP标头的MDN文档说明

The Accept request HTTP header advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header. Browsers set adequate values for this header depending of the context where the request is done....

application/json可能不在浏览器发送的Accept标头中的MIME类型列表中,因此警告.

自定义HTTP标头只能通过XMLHttpRequest或任何实现它的js库包装器以编程方式发送.


这是最正确和最丰富的答案.我想知道为什么在我的浏览器中直接导航到JSON API端点时发生这种情况.
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有