0

誰でも助けることができますか?Google.com が含まれているはずの UrlReferer を調べようとしていますが、現在のサイトが含まれています。私の Web ページは標準の HTM ページであり、jquery はそのように静的メソッドを呼び出します

    [WebMethod]
    public static void ProcessTracking(string jsonString)

このメソッド内で、Request.UrlReferrer で標準的なルックアップを行います。

    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;

しかし、常に現在のドメインが含まれています。これは少し疑わしいので、標準のasp.netページを作成して同じことを行ったところ、問題なく100%動作します..

そのため、htm ページが jquery を介して webmethod (静的) を呼び出し、問い合わせると、現在のサイトがUrlReferrer返さALWAYSれますが、これは間違っているようです。

誰かが回避策を知っていますか?

session_startなどで何かを試してみましたglobal.asaxが、修正されませんでした。

編集:HTMLでjqueryからページを呼び出す方法

$.ajax({
        type: "POST",
        url: "MyService.aspx/ProcessTracking",
        data: jsonData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        success: function(msg) {

        },
        error: function(msg) {
            alert(error);
        }
    });
4

4 に答える 4

1

そのスクリプトはあなたのページでホストされていますよね? その場合、リファラーはあなたのサイトになります。

ページ自体のリファラーが必要な場合は、Ajax 呼び出しでそれを引数として渡す必要があります。HTTP ヘッダーには存在しません。

プロパティからページのリファラーを読み取ることができdocument.referrerます。

于 2009-12-02T14:07:24.340 に答える
0

確かにそれはあなたの現在のドメインを含むべきです、それは投稿をしているウェブページですか?

元の発信者ページを取得する場合は、ajaxコードを呼び出して通過させる前に、元のWebページに保存する必要があります。

于 2009-12-02T14:07:35.090 に答える
0

AJAXリクエストを介して呼び出されたリソースは、呼び出し元のページをリファラーと見なします。そのため、ドメインはリファラーとして表示されます。

Global.asaxを使用するという正しい考えがありましたが、BeginRequestメソッドにフックしてみてください。

void Application_BeginRequest(Object Sender, EventArgs e)
{
    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;
}
于 2009-12-02T14:07:49.253 に答える
0

これは意図したとおりに機能しています。AJAXを使用して投稿すると、ページ(ドメイン!)からターゲットサーバーにリクエストが送信されます。

回避策の1つは、ページを作成するときに元のリファラーのホスト名をjavascript変数に格納することです。

var referrerHost = '<%= HttpContext.Current.Request.UrlReferrer.Host %>';

次に、それを関数のパラメーターでメソッドにjsonData送信する変数にパッケージ化します。ProcessTrackingajaxdata

于 2009-12-02T14:08:06.693 に答える