【问题标题】:ANGULARJS: "XMLHttpRequest cannot load http://localhost:62259/Service1.svc/getAllUsers. Invalid HTTP status code 405"ANGULARJS:“XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405”
【发布时间】:2015-08-16 15:06:31
【问题描述】:
所以,情况是这样的:
- 我正在使用 AngularJS(客户端)和 C#(服务器端)开发一个 Web 应用程序;
- 我已经有一些网络服务运行良好,没有任何问题(gelAllUsers、getOrderDetails 等);
-
在我实现身份验证代码后,Web 服务停止工作。以下是错误消息:
然后我意识到问题是由于每个代码行都带有“$http.defaults.headers.common.Authorization = ...”
经过一番搜索,我知道我可能需要做一些允许授权标头的事情。
但是什么?以及如何?在哪里?
【问题讨论】:
标签:
angularjs
http-headers
xmlhttprequest
options
http-status-code-405
【解决方案1】:
我找到了一个解决方案,感谢 CodeProject 中的一篇文章。
由于我是 Web 开发的新手,以下是我必须遵循的详细程序才能成功执行它:
-
了解为什么会出现这个问题,并且只需要在 WCF 中启用 CORS:
-
当我使用 Visual Studio 开发我的 WCF Web 服务时,为了创建文件 Global.asax,我必须:
* 在解决方案资源管理器中,右键单击项目名称 -> 添加 -> 新建项目...
* 在左侧菜单中,Web -> General 并选择 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();
}
}
-
请注意,在这种情况下,需要在其中添加“授权”
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
删除 web.config 中可能存在的类似内容,否则会因冗余数据而发生冲突。
我说什么都说了。