AngularJS $ http继续在我的一个网址

时间:2018-06-05 09:36:32

标签: javascript angularjs iis asp.net-web-api

我只是直接使用angularjs $http服务与我的API交互,只有一种情况是HTTP服务在我的网址中添加一个斜杠,在其他情况下将http://localhost:4845/api/autocomplete?subject=committee转换为http://localhost:4845/api/autocomplete/?subject=committee它没有修改给定的URL工作正常,我无法弄清楚原因

这是angularjs代码,我没有使用任何其他模块/服务/拦截器

$http.get('http://localhost:4845/api/autocomplete?subject=committee');

当我使用HTTP模块拦截服务器上的请求时,我发现对于完全相同的请求,context_BeginRequest方法被调用三次,第一次没有跟踪斜杠两次。

其他类似请求没有问题。

api是IIS上的ASP.NET WebApi 2

1 个答案:

答案 0 :(得分:0)

经过数小时的调查,我仍然不知道发生了什么,但我可以解决它,这个问题实际上与角度,角度调用资源/api/autocomplete没有关系,但是会发生什么呢? >是服务器上的文件夹,其中包含确切路径作为我正在请求的资源,因此服务器以某种方式将对资源/api/autocomplete的请求更改为对文件夹/api/autocomple/的请求。

如果你调试angularjs,你会在调试工具的网络选项卡中调用xhr.send之后看到这一点,我们可以看到在待处理状态下对/api/autocomplete的正确调用,但过了一段时间后会发生变化至/api/autocomplete/,结果为403(禁止)

更改文件夹名称或资源名称将解决此问题

在IIS Express中观察到此行为