Angular Js 应用程序在 IE-11 中状态 500 内部服务器错误

Status 500 Internal Server Error in IE-11 with Angular Js Application

我正在使用 Angular Js,MongoDb 实现单页应用程序 (SPA)。我正在使用带有承诺的休息电话。 Rest 调用在用于开发的 Mozila 浏览器 Chrome 中工作正常。但是 rest call 在 IE-11 中不起作用。它给我 500 内部服务器错误.

我无法找到休息电话线路。因为它没有显示行号。但我可以分享 rest 调用的示例代码。

  Rh.all('apicall').get('dbname/_aggrs/'+ ar_dep +'?avars=' + query).then(function (d) {

       console.log("response data");

      });

以上调用不是打印控制台。因为它在 IE-11 中被破坏了,但是这些其余的调用在其他浏览器中工作正常。 如果我输入直接路径而不是变量,那么它在 IE-11 中工作。
以下工作休息电话

Rh.all('apicall').get('dbname').then(function (d) {

           console.log("response data");

          });

控制台中的网络 (IE-11)

输入CHROME

我正在更新我的问题。因为我在解析时发现了一些差异url,因为restheart.

IN CHROME:

Rh.all('apicall').get('dbname/_aggrs/'+ ar_dep +'?avars=' + query)

解析后

localhost:8080/apicall/dbname/_aggrs/rout?avars={%22routes%22:%22US%22}

在查询对象中我有 routes:us。所以在 chrome 它解析 %22--%22 位置的 " ".

在 IE-11 中

Rh.all('apicall').get('dbname/_aggrs/'+ ar_dep +'?avars=' + query)

解析后

localhost:8080/apicall/dbname/_aggrs/rout?avars={"routes":"US"}

在 IE-11 中,它不会将双引号解析为 %22 %22。它与字符串解析相同。

500 错误总是与服务器有关。这些症状可能只出现在特定的浏览器上,但发生故障的是服务器;发送到服务器的请求导致 server-side 代码以某种方式失败。

错误 500 本身太笼统;在不知道有关错误的更多详细信息的情况下,诊断总是非常困难,坦率地说,我无法在这里给你一个明确的答案。

最后,您应该排除显而易见的问题,并检查您在 IE 中的浏览器设置。具体来说,任何可能导致它无法与服务器正确通信的设置。例如,确保 cookie 已启用并正常工作。

但是您应该做的第一件事是与 API 的供应商或开发人员讨论,因为他们可以访问服务器错误日志,如果他们的代码抛出错误,他们会想知道这件事500 错误。

但是,如果您确实想在最后进行调查,那么它特定于一个浏览器这一事实就是一个线索。如果其他浏览器正常工作,那么这告诉我们,这个浏览器 (IE11) 正在发送请求,其中包含与其他浏览器不同的内容,并且是触发 server-side失败的代码。这为我们的调查提供了一些帮助。

所以首先要做的是在所有浏览器中检查请求。在 Chrome、Firefox 和 IE 中使用 F12 开发工具,然后在所有三个中进行相同的调用,它在 FF 和 Chrome 中有效,但在 IE11 中无效.

在开发工具中,您现在应该能够检查所有三个的请求详细信息。比较一下。

首先查看请求数据——即发送的实际查询字符串。如果存在差异,请考虑这些差异是否是导致错误的原因。有些东西可能很明显;例如,如果 IE 截断了一个变量或类似的东西。如果这能解决问题,那就太好了。

如果没有帮助,那么您需要更详细地查看。也许有一些差异,但它们看起来不应该破坏任何东西?现代浏览器开发工具允许您编辑和 re-send 请求,因此请尝试在 Chrome 或 Firefox 的开发工具中编辑请求,并使参数与失败的 IE 中的参数相同。现在尝试 re-sending 该请求。如果幸运的话,这将导致请求在其他浏览器中失败,这将允许您表明特定数据集是问题所在(而不是特定浏览器)。您提到它是第三方 API,因此您需要与 API 供应商讨论,找出为什么该查询会破坏他们的 API。

如果此时您仍未发现问题,并且您在两个浏览器中发送相同的查询,并且您以同一用户身份登录,那么下一步就是查看请求headers.

有一个请求 header 肯定会有所不同:用户代理字符串。但可能还有其他人。再次尝试 re-sending 在 Chrome 中有效的请求,但使用来自 IE 中失败请求的 headers(包括 UA 字符串)。现在请求是否在 Chrome 中失败?如果是这样,请缩小导致失败的 header 不同之处。

同样,如果这允许您找到一组特定的请求数据和导致问题的 header,那么您将需要与 API 供应商讨论。

如果所有这些都没有帮助,请尝试查看 cookie。您已经检查过 cookie 是否正常工作,所以现在这似乎不太可能,但再次比较浏览器之间的 cookie,看看它们是否有明显不同。

希望以上内容足以帮助您诊断问题。