2016-03-15 67 views
13

我使用离子型框架和angularjs我使用Chrome看我的日志,但在这里,我做我想要发布用户登录页面输入的数据服务,但我得到这样的错误。的XMLHttpRequest无法加载和预检响应具有无效的HTTP状态码405

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 阅读一些博客,我算起来也就是从它允许AJAX请求CORS extention我试过后也,但我无法找到为什么这两个误差的出现。这里是我的代码在设备

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

我的代码工作很好,但我在Chrome得到错误,如果任何人知道为什么请帮我

+0

你能解决这个问题吗?我面对同样的情况。 – TechTurtle

+0

是的,它解决了 –

+1

你介意分享修复吗? – TechTurtle

回答

15

CORS实际上规定了两个请求应到服务器进行在AJAX调用中(如果某些条件适用,如发送自定义标题)。

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

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

你可以阅读更多关于CORS here

+2

感谢您的答案yorch我有web.config文件中的数据,但仍面临同样的问题 –

+0

我将配置部分添加到网络.config,但仍然可以修复错误 –

+0

如果某人需要访问第三方API,该怎么办? – kushalvm

13

如果您使用的镀铬,得到“允许控制允许原产地”插件。这会让你忽略所有的CORS错误。

它适用于移动,因为离子有一个科尔多瓦插件“科尔多瓦 - 插件白名单”。在你的“config.xml”中,你会默认看到该行,这意味着你的应用可以访问任何URL。

不幸的是通过浏览器进行测试时的科尔多瓦插件不活跃。

0

对于iOS设备,还请检查使用的协议。使用HTTPS而不是HTTP解决了我的问题。

相关问题