【问题标题】:XML Parsing Error: no root element found Location in Console FFXML 解析错误:在控制台 FF 中找不到根元素位置
【发布时间】:2017-09-29 10:47:06
【问题描述】:

我使用的是 ASP.NET MVC 端,我只在 FF 中出现此错误。为什么我会收到此错误消息?这是什么原因? 我不明白这个错误的根源在哪里。有人有什么想法吗?

下一个错误:

【问题讨论】:

    标签: javascript jquery xml asp.net-mvc


    【解决方案1】:

    查看link了解更多信息

    根据我的研究,错误消息仅由 FireFox 生成 当渲染页面在 Internet 中为空白时。出于某种原因,.NET 当它创建一个响应类型“application/xml” 空白页。 Firefox 将文件解析为 XML 并找不到根 元素,吐出错误信息。

    换句话说,这是一个已知的 Firefox 问题

    【讨论】:

    • 在 Internet Explorer 中,我没有收到错误,但它只是无法按预期工作。
    • For some reason, .NET generates a response type of "application/xml" when it creates an empty page这不是真的,空响应中没有Content-Type
    • 这个错误在 Firefox 中仍然存在。 :E
    【解决方案2】:

    我在几种不同的情况下看到了XML Parsing error: no root element 错误。它通常只出现在 Firefox 开发者控制台中。

    1. 返回带有空正文的 200 OK 响应代码。您的服务器应改为返回 204 No Content 响应代码。

    2. 返回204 No Content 响应代码,然后将内容附加到响应中。您的服务器应改为返回 200 OK 响应代码。

    3. 返回不正确的Content-Type。将其设置为与响应正文中使用的类型相同的类型(JSON、XML、纯文本等),否则可能会被错误地解析。

    如果这些都不能解决您的问题,我会检查您的所有响应标头是否正确。 Content-Length 等其他字段也可能会产生干扰。

    【讨论】:

      【解决方案3】:

      这是此错误消息的最高 Google 结果,我还没有看到涵盖另一个棘手案例的答案,所以这里是:

      如果您的 SVG 服务正确,但缺少结束 </svg> 标记,也会发生这种情况!例如,如果响应仅提供部分服务,因为它是流式响应,并且在中途出错……

      【讨论】:

        【解决方案4】:
        public IActionResult MethodName()
        {
            // YOUR CODE 
            return StatusCode(204);
        }
        

        代码 204 - 服务器成功处理了请求,并且没有返回任何内容

        有关状态码的更多详细信息,请查看此页面: List of HTTP status codes

        【讨论】:

          【解决方案5】:

          我在 Action 方法中更改了返回值的类型并且它起作用了。更多详情请见my article on this topic

          改变自

          return Ok();
          

          return Json("Ok");
          

          【讨论】:

          • 你也可以返回 NoContent();这或多或少相当于 return StatusCode(204);返回确定(空);也会让 Firefox 开心。两者的区别在这里解释得很好:stackoverflow.com/questions/59861379/…
          【解决方案6】:

          我通过将服务器上的 Content-Type 标头设置为 text/plain 在我的应用程序中解决了这个问题。在 Node 中是这样的:

          res.setHeader('Content-Type', 'text/plain');
          

          使用适合您数据的任何 MIME 类型,例如 application/json 等。

          【讨论】:

            【解决方案7】:

            如果您的控制器操作上有 [ValidateAntiForgeryToken] 属性并尝试在没有实际令牌的情况下提交表单,这也可能发生。您可以使用

            显式呈现令牌
            @Html.AntiForgeryToken()
            

            这是首选解决方案或删除验证属性。

            【讨论】:

              【解决方案8】:

              我们在发布 axios 调用时收到此错误。而我们的测试服务器不在

              allowed-origin: 
              

              主机列表。将我们的服务器添加到 application.yml 中的 allowed-origin 解决了这个问题。

              【讨论】:

                【解决方案9】:

                我解决了我的问题

                return NoContent();
                

                当你什么都不想要返回时,这似乎更清楚了。

                【讨论】:

                  猜你喜欢
                  • 2017-08-03
                  • 2021-01-17
                  • 2017-09-08
                  • 2017-09-22
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-06-06
                  • 1970-01-01
                  相关资源
                  最近更新 更多