7

呼び出されたこの ajax が機能しない理由を理解しようとしています。

 $.ajax({
        type: 'GET',
        url: "http://localhost:8732/Design_Time_Addresses/InMotionGIT_NT.Address.Service/AddressService/json/capitalize",
        data: { streetAddress : JSON.stringify(streetAddress) , consumer :  JSON.stringify(consumer)} ,
        datatype: "jsonp",
        success: function (data) {
            $('body').append('<div>'+data.IDblah+' '+ data.prueba+'</div>');
            alert(data.IDblah);
        }

サービスは、データが正しく受信され、応答が正しいことを受け取ります。なぜ私は間違っているのですか?

呼び出された ajax にこのプロパティを追加しようとしましたが、成功しませんでしたcrossDomain : true

[OperationContract()]
[WebInvoke(Method="GET", RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]
public string Capitalize(StreetAddress streetAddress,ConsumerInformation consumer)

私が得ているエラーは一般的です

 XMLHttpRequest cannot load Origin http://localhost:50816 is not allowed by Access-Control-Allow-Origin.

アップデート

ファイルに構成を追加して、応答にヘッダーを追加しようとしましたApp.configが、成功しませんでした

<system.webServer>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>
</system.webServer>
4

6 に答える 6

4

このリンクが役に立ちます: http://enable-cors.org/

クライアントに送り返す応答に次のヘッダーを追加する必要があります。

//すべてのドメインを許可

Access-Control-Allow-Origin: *

また

//特定のドメインを許可

Access-Control-Allow-Origin: http://example.com:8080 http://foo.example.com

于 2012-05-25T20:33:15.560 に答える
1

Visual Studio、Chrome、および Firefox で WCF サービスを直接操作すると、同じ問題が発生しました。私は次のように修正しました:

以下の関数で Global.asax ファイルを編集します。

            private void EnableCrossDomainAjaxCall()
            {
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

                if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
                {
                    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
                    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept");
                    HttpContext.Current.Response.End();
                }
            }

次に、から関数を呼び出します

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
       EnableCrossDomainAjaxCall();
    }

次の URL から詳細情報を取得できます。

http://blog.blums.eu/2013/09/05/restfull-wcf-service-with-cors-and-jquery-and-basic-access-authentication .

于 2014-07-11T08:27:54.450 に答える
0

これを処理する別の方法 (自己ホスト型サービスに適しています) については、こちらを参照してください。

于 2016-03-22T14:10:49.870 に答える