0

ログインWebサービスを使用してユーザーを検証しています。

これらは、POST メソッドでデータのみを受け入れるように設計された Spring 3.0 REST Web サービスです。

GET を使用して Web サービスにデータを送信できます。

しかし、Web サービスの実装により、POST メソッドを使用してデータを送信する必要があります。

POST で jquery ajax リクエストを使用すると、403 アクセス禁止エラーが発生します。

以下は、GET リクエストの実際の例です。

CORS サポートを有効にするために、Tomcat の CORS フィルターを使用しています。

 function callservice() 
    {
    jQuery.support.cors = true;
        var mobNo = document.getElementById('mobileNo').value;
        var acctNo = document.getElementById('accountNo').value;
        var custNo = document.getElementById('customerId').value;

        url = url+mobNo+"/"+acctNo+"/"+custNo;

        $.getJSON(url,
        function(data) 
        {
            if (data.authenticated==true)
            {
                alert("data "+data);
            } 
        });

}

しかし、次のコードを使用すると、403 エラーが発生します。

    function callservice() 
    {
        jQuery.support.cors = true;
        var mobNo = "123123123";
        var acctNo = "123123123";
        var custNo = "123123123";

        var url = "http://localhost/mobile-services/rest/user/";        
        var dataVal = {};
        dataVal["mobileNo"] = mobNo;
        dataVal["accountNo"] = acctNo;
        dataVal["customerId"] = custNo;

        var forminput = JSON.stringify(dataVal);

    $.ajax({
        url: url,
        type: "POST",
        data:forminput,
        datatype:"jsonp",
        crossDomain: true,
        contentType: "application/json",
        beforeSend: function () { },
        headers : 
        {
            "Content-Type"  : "application/json",
            "Accept" : "application/json",
            "Origin" : "http://localhost/",
            "Access-Control-Allow-Origin" : "*"
        },
        success: function (data) 
        {          
            if (data.authenticated==true)
            {
                window.location.replace("http://localhost:8080/mobile-services/selected_services.jsp?userId="+data.id);
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) 
        {
            try 
            {
                alert(JSON.stringify(XMLHttpRequest) + "\n" + textStatus + "\n" + errorThrown);
            }
            catch (ex) { alert("Exception occured.. "); }
            finally { }
        }
    });
}

提案してください。

4

1 に答える 1

0

YQL を試して、クロス ドメイン リクエストを作成できます。

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

http://christianheilmann.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/

于 2012-07-05T11:56:12.643 に答える