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"
所以,情况是这样的:
- 我正在使用 AngularJS (client-side) 和 C# (server-side) 开发网络应用程序;
- 我已经有一些 Web 服务 运行 很好,没有问题(gelAllUsers、getOrderDetails 等);
我执行验证码后,网络服务停止工作。以下是错误消息:
- 选项http://localhost:62259/Service1.svc/getAllUsers
- XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405
然后我意识到问题是由于每个代码行都带有“$http.defaults.headers.common.Authorization = ...”
经过一番搜索,我知道我可能需要做一些允许授权的事情 header。
但是什么?以及如何?在哪里?
我找到了一个解决方案,并且由于 CodeProject 中的一篇文章而有效。
由于我是 web 开发的新手,为了成功执行它,我必须遵循以下详细过程:
了解为什么存在这个问题,并且只需要在 WCF 中启用 CORS:
- 仔细阅读http://www.codeproject.com/Articles/845474/Enabling-CORS-in-WCF中的文章
- 相信我,这是值得的。我不会解释得更好;
因为我正在使用 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();
}
}
注意,在这种情况下,需要在
中加上'Authorization'
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
删除web.config中可能有的类似内容,否则会因冗余数据而发生冲突。
我想我什么都说了。
所以,情况是这样的:
- 我正在使用 AngularJS (client-side) 和 C# (server-side) 开发网络应用程序;
- 我已经有一些 Web 服务 运行 很好,没有问题(gelAllUsers、getOrderDetails 等);
我执行验证码后,网络服务停止工作。以下是错误消息:
- 选项http://localhost:62259/Service1.svc/getAllUsers
- XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405
然后我意识到问题是由于每个代码行都带有“$http.defaults.headers.common.Authorization = ...”
经过一番搜索,我知道我可能需要做一些允许授权的事情 header。
但是什么?以及如何?在哪里?
我找到了一个解决方案,并且由于 CodeProject 中的一篇文章而有效。 由于我是 web 开发的新手,为了成功执行它,我必须遵循以下详细过程:
了解为什么存在这个问题,并且只需要在 WCF 中启用 CORS:
- 仔细阅读http://www.codeproject.com/Articles/845474/Enabling-CORS-in-WCF中的文章
- 相信我,这是值得的。我不会解释得更好;
- 仔细阅读http://www.codeproject.com/Articles/845474/Enabling-CORS-in-WCF中的文章
因为我正在使用 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();
}
}
注意,在这种情况下,需要在
中加上'Authorization'HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
删除web.config中可能有的类似内容,否则会因冗余数据而发生冲突。
我想我什么都说了。