ANGULARJS:“XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405”

Posted

技术标签:

【中文标题】ANGULARJS:“XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405”【英文标题】:ANGULARJS: "XMLHttpRequest cannot load http://localhost:62259/Service1.svc/getAllUsers. Invalid HTTP status code 405" 【发布时间】:2015-08-16 15:06:31 【问题描述】:

所以,情况是这样的:

    我正在使用 AngularJS(客户端)和 C#(服务器端)开发一个 Web 应用程序; 我已经有一些网络服务运行良好,没有任何问题(gelAllUsers、getOrderDetails 等);

    在我实现身份验证代码后,Web 服务停止工作。以下是错误消息:

    选项http://localhost:62259/Service1.svc/getAllUsers XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。 HTTP 状态码 405 无效

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

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

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

【问题讨论】:

【参考方案1】:

我找到了一个解决方案,感谢 CodeProject 中的一篇文章。 由于我是 Web 开发的新手,以下是我必须遵循的详细程序才能成功执行它:

    了解为什么会出现这个问题,并且只需要在 WCF 中启用 CORS:

    仔细阅读http://www.codeproject.com/Articles/845474/Enabling-CORS-in-WCF中的文章 相信我,这是值得的。我不会更好地解释;

    当我使用 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 中可能存在的类似内容,否则会因冗余数据而发生冲突。

我说什么都说了。

【讨论】:

以上是关于ANGULARJS:“XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405”的主要内容,如果未能解决你的问题,请参考以下文章

AngularJs——对 XMLHttpRequest 的访问已被 CORS 策略阻止 [重复]

AngularJs - 服务器抛出异常''XMLHttpRequest 无法加载预检的“URL”响应无效(重定向)'

angularjs - 重构XMLHttpRequest到$ http

错误消息“无法加载 XMLHttpRequest。 AngularJS 中的 HTTP 仅支持跨源请求

ANGULARJS:“XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405”

如果我使用 XMLhttprequest 调用 API,它可以正常工作。但是当我使用 angularjs (1.5.6) 时,我得到了 CORS 错误