Android 由于CORS,从浏览器对Rest Web服务的Ajax Post调用无法工作

Android 由于CORS,从浏览器对Rest Web服务的Ajax Post调用无法工作,android,ajax,cordova,cors,phonegap-plugins,Android,Ajax,Cordova,Cors,Phonegap Plugins,我试图通过broswer的web服务将数据插入数据库,但我收到了错误(屏幕截图)。 $("#signup").click(function () { var radio = $('input[name="radio"]:checked').val(); var fullname = $("#fullname").val(); var email = $("#email").val(); var

我试图通过broswer的web服务将数据插入数据库,但我收到了错误(屏幕截图)。

   $("#signup").click(function () {
            var radio = $('input[name="radio"]:checked').val();
            var fullname = $("#fullname").val();
            var email = $("#email").val();
            var phoneno = $("#phoneno").val();
            var password = $("#password").val();
            var dataString = "{'Cust_Type':'" + radio + "','Contact_Name':'" + fullname + "','Contact_No':'" + phoneno + "','Email':'" + email + "','Password':'" + password + "'}";

            if ($.trim(radio).length > 0 & $.trim(fullname).length > 0 & $.trim(phoneno).length > 0 & $.trim(email).length > 0 & $.trim(password).length > 0) {
                $.post({
                    type: "POST",
                    url: "http://test.com/testWebservices/testservices.svc/mobilesignup",
                     dataType: "json",
                    data: dataString,
                    crossDomain: true,
                    cache: false,
                    beforeSend: function () { $("#signup").val('Connecting...'); },
                    success: function (data) {
                        if (data == "success") {
                            alert("Thank you for Registering with us! you can login now");
                        }
                        else if (data = "exist") {
                            alert("Hey! You alreay has account! you can login with us");
                        }
                        else if (data = "failed") {
                            alert("Something Went wrong");
                        }
                    }
                });
            } return false;

        });

我正在使用phonegap从broswer调用服务api(不工作),但当我尝试从postman插件调用服务api时,它会工作,数据会成功插入数据库。如果Test.com网站位于IIS7

   $("#signup").click(function () {
            var radio = $('input[name="radio"]:checked').val();
            var fullname = $("#fullname").val();
            var email = $("#email").val();
            var phoneno = $("#phoneno").val();
            var password = $("#password").val();
            var dataString = "{'Cust_Type':'" + radio + "','Contact_Name':'" + fullname + "','Contact_No':'" + phoneno + "','Email':'" + email + "','Password':'" + password + "'}";

            if ($.trim(radio).length > 0 & $.trim(fullname).length > 0 & $.trim(phoneno).length > 0 & $.trim(email).length > 0 & $.trim(password).length > 0) {
                $.post({
                    type: "POST",
                    url: "http://test.com/testWebservices/testservices.svc/mobilesignup",
                     dataType: "json",
                    data: dataString,
                    crossDomain: true,
                    cache: false,
                    beforeSend: function () { $("#signup").val('Connecting...'); },
                    success: function (data) {
                        if (data == "success") {
                            alert("Thank you for Registering with us! you can login now");
                        }
                        else if (data = "exist") {
                            alert("Hey! You alreay has account! you can login with us");
                        }
                        else if (data = "failed") {
                            alert("Something Went wrong");
                        }
                    }
                });
            } return false;

        });
在应用程序()的根目录上创建
Web.config
文件,并在其中添加以下XML代码

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>

更新:

适用于IIS6

  • 打开Internet信息服务(IIS)管理器
  • 右键单击要为其启用CORS的站点(test.com),然后转到 财产
  • 更改为HTTP标题选项卡
  • 在自定义HTTP头部分中,单击添加
  • 输入
    Access Control Allow Origin
    作为标题名
  • 输入
    *
    作为标题值
  • 单击“确定”

  • 您的js文件是否托管在Web服务器(如IIS)上?否。iam正在使用phonegap.创建apk文件。站点test.com的宿主是哪个web服务器?iis服务器。仅宿主该服务。请在真实设备上尝试,而不是在浏览器上。我正在使用iis 6。但我已在web.config中使用此代码。获取此错误“阻止跨源请求:同一源策略不允许读取位于的远程资源。(原因:CORS标头“缺少访问控制允许来源)”“请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“null”。响应的HTTP状态代码为“for chrome当我将此行放入web.config时,我收到500个内部服务器错误。并且网站未打开。请继续执行IIS6的步骤并重新启动IIS服务器。