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,看看它们是否有明显不同。
希望以上内容足以帮助您诊断问题。
我正在使用 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,看看它们是否有明显不同。
希望以上内容足以帮助您诊断问题。