ANGULARJS: "XMLHttpRequest cannot load http://localhost:62259/Service1.svc/getAllUsers. Invalid HTTP status code 405"

ANGULARJS: "XMLHttpRequest cannot load http://localhost:62259/Service1.svc/getAllUsers. Invalid HTTP status code 405"

所以,情况是这样的:

  1. 我正在使用 AngularJS (client-side) 和 C# (server-side) 开发网络应用程序;
  2. 我已经有一些 Web 服务 运行 很好,没有问题(gelAllUsers、getOrderDetails 等);
  3. 我执行验证码后,网络服务停止工作。以下是错误消息:

  4. 然后我意识到问题是由于每个代码行都带有“$http.defaults.headers.common.Authorization = ...”

  5. 经过一番搜索,我知道我可能需要做一些允许授权的事情 header。

但是什么?以及如何?在哪里?

我找到了一个解决方案,并且由于 CodeProject 中的一篇文章而有效。 由于我是 web 开发的新手,为了成功执行它,我必须遵循以下详细过程:

  1. 了解为什么存在这个问题,并且只需要在 WCF 中启用 CORS:

  2. 因为我正在使用 Visual Studio 开发我的 WCF Web 服务,为了创建文件 Global.asax,我必须: * 在解决方案资源管理器中,右键单击项目名称 -> 添加 -> 新建项... * 在左侧菜单中,Web -> General 和 select Global Application Class * 写这段代码:

    protected void Application_BeginRequest(object sender, EventArgs e)

{

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
    HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
    HttpContext.Current.Response.End();
}

}

  1. 注意,在这种情况下,需要在

    中加上'Authorization'

    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");

  2. 删除web.config中可能有的类似内容,否则会因冗余数据而发生冲突。

我想我什么都说了。