【问题标题】:AngularJS $http keep adding a trailing slash to just one of my urlsAngularJS $http 不断在我的一个网址中添加斜杠
【发布时间】:2018-11-14 17:59:23
【问题描述】:

在其中一种情况下,我直接使用 angularjs $http 服务与我的 API 交互给定的网址,我无法弄清楚原因

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

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

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

其他类似请求没有问题。

API 是 IIS 上的 ASP.NET WebApi 2

【问题讨论】:

  • 我们可以看看你的 $http 代码吗?
  • 请发布您的$http 代码。没有看到这一点,很难说出问题所在。你使用的是$routeProvider 还是$locationProvider
  • 没有 $http 代码我正在使用 $http 服务简单明了,没有额外的服务

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


【解决方案1】:

经过几个小时的调查,我仍然不知道发生了什么但我可以解决它,这个问题实际上与角度无关,角度调用资源/api/autocomplete 但发生的事情是有 服务器上的一个文件夹,其确切路径是我请求的资源,因此服务器以某种方式将对资源 /api/autocomplete 的请求更改为对文件夹 /api/autocomple/ 的请求。

如果您调试 angularjs,您将在调试器工具的网络选项卡中调用 xhr.send 后看到这一点,我们可以看到对 /api/autocomplete 的正确调用处于挂起状态,但一段时间后会更改为 /api/autocomplete/结果为 403(禁止)

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

在 IIS Express 中观察到此行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 2011-08-21
    • 1970-01-01
    • 2013-08-31
    • 2015-06-21
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    相关资源
    最近更新 更多