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

Angularjs 带有Angular Js应用程序的IE-11中的状态500内部服务器错误,angularjs,mongodb,internet-explorer,cross-browser,restheart,Angularjs,Mongodb,Internet Explorer,Cross Browser,Restheart,我正在使用Angular Js、MongoDb实现单页应用程序(SPA)。我正在使用rest call进行承诺。Rest调用在用于开发的Chrome、Mozila浏览器中工作良好。但rest呼叫在IE-11中不起作用。它给了我500个内部服务器错误 我找不到休息电话的线路。因为它没有显示行号。但我可以分享rest调用的示例代码 Rh.all('apicall').get('dbname/_aggrs/'+ ar_dep +'?avars=' + query).then(function (d

我正在使用Angular Js、MongoDb实现单页应用程序(SPA)。我正在使用rest call进行承诺。Rest调用在用于开发的Chrome、Mozila浏览器中工作良好。但rest呼叫在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)

铬合金

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

铬合金:

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

解析后

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

在查询对象中,我有路由: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中,它没有将双qoutes解析为%22%22。它与字符串解析相同。

500错误始终与服务器相关。这些症状可能只在特定的浏览器中出现,但出现故障的是服务器;发送到服务器的请求导致服务器端代码以某种方式失败

错误500本身太普遍了;如果不知道关于错误的更多细节,诊断总是非常困难的,坦率地说,我在这里无法给你一个明确的答案

最后,您应该排除明显的问题,并在IE中检查您的浏览器设置。特别是,任何可能导致IE无法与服务器正常通信的设置。例如,确保Cookie已启用且工作正常

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

然而,如果你真的想调查到底,它是特定于一个浏览器这一事实就是一个线索。如果其他浏览器正在工作,那么这告诉我们,这一个浏览器(IE11)正在发送与其他浏览器不同的请求,这是触发服务器端代码失败的原因。这给了我们在调查中的一些合作

因此,首先要做的是在所有浏览器中检查请求。在Chrome、Firefox和IE中使用F12开发工具,并且在这三种工具中都进行了相同的调用,它在FF和Chrome中工作,但在IE11中不起作用

在dev工具中,您现在应该能够检查这三个方面的请求详细信息。比较一下

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

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

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

有一个请求头肯定会有所不同:用户代理字符串。但也可能有其他人。再次尝试重新发送在Chrome中工作的请求,但使用IE中失败请求的头(包括UA字符串)。现在请求是否在Chrome中失败?如果是这样,请缩小导致失败的标头的范围

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

如果所有这些都没有帮助,那么试着看看饼干。您已经检查了cookies是否正常工作,所以现在看来这是一个很长的机会,但是再次比较浏览器之间的cookies,看看它们是否有明显的不同


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

检查服务器端错误日志。@charlietfl我无法查看服务器端错误日志。因为我只调用API。我没有与服务器端代码交互。请检查“网络”选项卡中的实际请求,然后与另一个浏览器中的相同请求进行比较。从标题到数据sentIn chrome,一切都很好。给我200个ok状态这只是状态。。。请求中的其他内容必须与解决方案非常不同。我比较了两个不同的URL(IE-11和Chrome)。因为我正在使用restheart。它正在分析url,如..%22var%22:%22abc%22。。但在IE-11中不能