我只是直接使用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
答案 0 :(得分:0)
经过数小时的调查,我仍然不知道发生了什么,但我可以解决它,这个问题实际上与角度,角度调用资源/api/autocomplete
没有关系,但是会发生什么呢? >是服务器上的文件夹,其中包含确切路径作为我正在请求的资源,因此服务器以某种方式将对资源/api/autocomplete
的请求更改为对文件夹/api/autocomple/
的请求。
如果你调试angularjs,你会在调试工具的网络选项卡中调用xhr.send
之后看到这一点,我们可以看到在待处理状态下对/api/autocomplete
的正确调用,但过了一段时间后会发生变化至/api/autocomplete/
,结果为403(禁止)
更改文件夹名称或资源名称将解决此问题
在IIS Express中观察到此行为