2012-04-13 2 views
2

Global.asax.csファイルには、クロスドメインアクセスを許可するコードがあります。リクエスト中のドメインURLを検索するにはどうすればいいですか?

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     HttpContext.Current.Response.Cache.SetNoStore(); 

     if(// The requesting URL == "http://theproperdomain.com"){ 
      EnableCrossDmainAjaxCall(); 
     } 
    } 

    private void EnableCrossDmainAjaxCall() 
    { 
     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(); 
     } 
    } 

私の休憩プロジェクトがクロスドメインアクセスを許可する前に、要求元のドメインが適切なドメインと等しいかどうか最初にチェックする必要があります。すなわち:「http://theproperdomain.com」

私はこのコードを持っている:

string properdomain = HttpContext.Current.Request.Url.AbsoluteUri; 

をしかし、私はそれを使用するのが最善であるかはわかりません。
あなたの良いアイデアを提案してください。

編集

マイドメインサーバは、私の残りのサービスが常駐http://theproperdomain.comです。
私はwebconfigからこのドメイン名を取得し、現在のアクセスクライアントと比較します。私は "クロスドメインアクセス"のために1つのドメインだけを許可したいので、これを行う必要があります。

+0

現在のリクエストが送信された参照元ドメインまたはドメインを取得しますか? – Ramesh

答えて

1

Host header of HTTP/1.1を使用すると、現在の要求が送信されるドメインを識別できます。要求は、この情報が欠落している場合は、仕様どおりにあなたが要求が行われているどのアプリケーションからお知りになりたい場合は、HttpContext.Current.Request.Headers["HOST"]

を使用することができますが、ヘッダにアクセスするには400不正な要求

を返すことができ、すべてのアプリケーションで一意であり、許可が必要なアプリケーションの秘密を維持する必要があります。これは、アプリケーションの秘密が安全な限り安全です。リファラヘッダーは省略可能なフィールドなので、使用しないでください。

+0

明確な説明をお寄せいただき、ありがとうございます。私は、現在のリクエストが送られたドメインが必要だと思います。 – fiberOptics

+0

私の編集をご覧ください。 – fiberOptics

+0

@ryan私はあなたが間違っていると思います。 Webでホストすると、URLを持つ任意の人/ドメインがそのサイトに電話をかけることができます。これらのリクエストにはあなたのドメインのみが含まれます。 – Ramesh

関連する問題