2012-04-18 13 views
1

リクエストがAJAX経由でC#で送信されているかどうかを調べる方法を調査しましたが、それは私にとってはうまくいかないようです。私のコードは以下の通りです。私はAJAXのメソッドをクライアントサイドのページを使用します(私の場合、activeXobjectが使用されています)。 ajaxedページはajaxプロパティserversideの要求をチェックしていますが、X-Requested-Withプロパティのどちらも返されません(印刷時に空白が表示されます)。アイデア?Ajaxリクエストを確認する

アヤックス方法(Javascriptを)

/* 
* Ajax page loads with url 
* @param url : URL to call for ajax page load 
* @param element : Element ID to be updated 
*/ 
function ajax(url, element) { 
    UtilLogger.log(HtmlLogger.INFO, "-AJAX Call for " + url + " in " + element + "-"); 
    var ajx; 
    if (window.HXMLHttpRequest) { 
     UtilLogger.log(HtmlLogger.FINE, "Using XMLHttpRequest"); 
     ajx = new XMLHttpRequest(); 
    } 
    else { 
     UtilLogger.log(HtmlLogger.FINE, "Using ActiveXObject"); 
     ajx = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    ajx.open("GET", url, true); 
    ajx.send(); 
    ajx.onreadystatechange = function() { 
     if (ajx.readyState == 4 && ajx.status == 200) { 
      document.getElementById(element).innerHTML = ajx.responseText; 
     } 
     else if (ajx.readyState == 4 && ajx.status == 400) { 
      alert("Page Error. Please refresh and try again."); 
     } 
     else if (ajx.readyState == 4 && ajx.status == 500) { 
      alert("Server Error. Please refresh and try again."); 
     } 
    } 
    UtilLogger.log(HtmlLogger.INFO, "-END AJAX Call for " + url + " in " + element + "-"); 
} 

Ajaxのログインチェック(C#の)

/* Checks for ajax request validity 
* @param HttpResponse resp : response to redirect if not ajax request 
* @param HttpRequest req : request to check for ajax 
*/ 
public static void checkAjax(HttpResponse resp, HttpRequest req) 
{ 
    if(req == null || 
     (req["X-Requested-With"] != "XMLHttpRequest" && 
     (req.Headers != null && req.Headers["X-Requested-With"] != "XMLHttpRequest"))){ 
      // resp.Redirect("./ajaxerror.aspx"); 
      resp.Write(req["X-Requested-With"] + ":" + req.Headers["X-Requested-With"]); 
    } 
} 
+0

は、たぶん私はちょうど何かが欠けていますが、なぜあなたは '(REQ == nullの場合のためにチェックしている||'それはすべきではありません? –

+0

@Scottこれはほんのちょっとしたチェックですが、リクエストがnullの場合は問題がありますが、私は先に進み、私のajaxエラーページに転送します。 – steventnorris

+1

これはコメントアウトされていますが、そこには他にもあなたが削除されていると思います。 req == null'はあなたのコードの 'resp.Write(req [" X-Requested-With "] ...)部分に入り、エラーを投げます。 –

答えて

2

あなたのクライアント側の要求は、任意の "X-要求-では" と、ヘッダーやクエリパラメータを提供していません。あなたのサーバーは自動的に(ただし、Microsoft AJAXのようないくつかのフレームワークは機能します)。 AJAX呼び出しは、いくつかのヘッダを追加するために、任意のHTTPリクエストのように動作します:

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 
+0

したがって、ヘッダーを自分で設定せずにAJAXリクエストを確認する方法はありません。 – steventnorris

+0

AJAXリクエストは、画像、スクリプト、またはiframeと同じ方法で、追加情報なしでHTTPプロトコルを使用します。 XHRリクエストを追跡する場合は、適切なヘッダー(またはパラメータ、クッキーなど)を「タグ付け」する必要があります。 – fmgp

+0

ありがとうございました。ヘッダー情報を追加しました。現在は正常に動作しています。 – steventnorris

関連する問題