XMLHttpRequest无法加载,预检的响应具有无效的HTTP状态代码405

时间:2016-03-15 04:57:14

标签: angularjs ajax ionic-framework

我正在使用离子框架和angularjs我使用chrome来查看我的日志但是在这里我正在做一个登录页面我试图发布用户输入的数据来服务但我得到这样的错误。

 OPTIONS http://aflaree.com/qrcodeservice/Service1.svc/login 

这是下一个错误XMLHttpRequest cannot load http://aflaree.com/qrcodeservice/Service1.svc/login Response for preflight has invalid HTTP status code 405    在阅读了一些博客之后我认为有一个CORS扩展来自哪个允许ajax请求我也试过但我无法找到为什么这两个错误出现。这是我的代码

https://plnkr.co/edit/Dz0aFsLqoQcnCxht00z3?p=preview

我的代码在设备中工作正常,但如果有人知道为什么请帮助我,我会在chrome中出错

3 个答案:

答案 0 :(得分:17)

CORS实际上指定在AJAX调用时应向服务器发出两个请求(如果某些条件适用,例如发送自定义标头)。

第一个请求(具有OPTIONS方法的请求)在飞行前被调用,用于检查将完整请求发送到服务器是否安全。来自服务器的响应应包含有效Access-Control-Allow-Origin标头,其中包含客户端的URL或*

您的服务器(而不是客户端)是需要支持CORS的服务器。看来你正在使用.Net,所以你可能想看看here如何配置IIS。

您可以阅读有关CORS here的更多信息。

答案 1 :(得分:13)

如果您正在使用Chrome,请获取" Allow-Control-Allow-Origin"插入。这将让您忽略所有CORS错误。

它适用于移动设备,因为离子有一个cordova插件" cordova-plugin-whitelist"。在你的" config.xml"默认情况下,您会看到该行,这意味着您的应用可以访问任何网址。

不幸的是,在通过浏览器进行测试时,cordova插件未激活。

答案 2 :(得分:0)

对于iOS设备,还要检查使用的协议。使用HTTPS代替HTTP解决了我的问题。