【发布时间】:2015-09-03 05:04:45
【问题描述】:
我有一个 AngularJS 单页应用程序,它从 C# Web API 服务发送和检索数据。这两个应用程序都托管在 Amazon Elastic Beanstalk 上。我会定期在 Google Chrome 开发者控制台中收到失败的请求。请求是http://singlepageapp.elasticbeanstalk.com/null。它困扰着我,因为我无法弄清楚它的来源。我的应用程序中的所有 Ajax 请求都来自同一个地方,并且始终具有带有“api/”和 Web API 控制器名称的基本 URI (http://mywebapi.elasticbeanstalk.com/)。开发人员控制台显示以下内容:
Request URL:http://singlepageapp.elasticbeanstalk.com/null
Request Method:GET
Status Code:404 Not Found
导致错误的原始请求如下:
GET /null HTTP/1.1
Host: singlepageapp.elasticbeanstalk.com
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
Accept: */*
Referer: http://singlepageapp.elasticbeanstalk.com/
Accept-Language: en
Range: bytes=0-1244
Chrome 将类型列为“媒体”,将发起者列为“其他”。任何想法将不胜感激。非常感谢。
编辑:我刚刚再次收到错误并注意到请求不是针对我的 Web api,而是针对弹性 beanstalk 单页应用程序。我的逻辑不对这个 URI 发出(直接)请求,所有这些都是由浏览器响应用户单击链接而启动的。在这种情况下,成功保存后一个“页面”上的“保存”按钮会运行以下内容:
$location.path('/next-page');
正是这个触发了错误的请求。但是,通过单击菜单中的链接直接转到此 URI 时,不会发生这种情况。
【问题讨论】:
-
你能列出任何在 AJAX 请求中总是命中
host + 'api/' + endpoint的 Angular 代码吗?显然其中一个'api/' + endpoint计算返回了null,它被字符串化为"null"。 -
@AustinMullins 非常感谢您的回复。我刚刚注意到有问题的请求不是针对我的 Web API,而是针对单页应用程序 URI。也就是说,它是由浏览器发起的。我已经编辑了我的问题以反映这一点。
标签: javascript ajax angularjs asp.net-web-api2 single-page-application