0

ハードな Microsoft Visual Studio 2008 を使用しています。Web サービスから WCF サービスへのクロス ドメイン クエリを作成したいのですが、うまくいきません。

Web ページ上の Ajax コード:

$.ajax (
    url: "http:/сите.com/ApplicationController.svc/HelloPost/"
    type: "POST",
    dataType: "json",
    contentType: "application/json",
    success: function (data) {
        alert (data);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert (jqXHR textStatus errorThrown);<br/>
    }
});

しかし、私のWCFサービス:

[OperationContract]
[WebInvoke (Method = "POST", UriTemplate = "HelloPost /", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
[JSONPBehavior (callback = "callback")]
String GetPostHello (Stream data);

public String GetPostHello (Stream data)
{
    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, Accept");
        HttpContext.Current.Response.AddHeader ("Access-Control-Max-Age", "1728000");
        HttpContext.Current.Response.End ();
        return null;
    }
    return "Hello";
}

ドメインを使用した GET リクエストは機能しますが、POST リクエストを作成しようとすると、次のヘッダーが返されます。

Content-Type application/json Accept application/json, text/javascript, */*;q=0.01

助けて、何が問題なの?ありがとうございました!

4

1 に答える 1

1

CORS ( Access-Controlヘッダーで使用しているもの) をサポートするブラウザーによって POST 要求がクロスドメインで行われる場合、要求の前に、ブラウザーは最初に HTTP要求であるプリフライトOPTIONS要求を送信し、サーバーに POST リクエストを送信してもよいかどうか。OPTIONS 要求に応答する別の操作を追加するか、WCF の完全な CORS サポートを実装することができます。これは単純ではありませんが、http://blogs.msdn.com/b/carlosfigueira/に書いています。 archive/2012/05/15/implementing-cors-support-in-wcf.aspxを参照して、これを機能させるために必要な手順を説明します。

于 2013-04-10T07:05:32.483 に答える