2012-04-13 3 views
2

In der Datei Global.asax.cs habe ich den Code, der den domänenübergreifenden Zugriff ermöglicht.Wie kann die anfragende Domain-URL im Ruhezustand abgerufen werden?

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(); 
     } 
    } 

Aber vor meiner Ruhe Projekt Zugang Cross-Domain erlaubt, muss zunächst prüfen, ob die anfragende Domain auf die richtige Domäne entspricht. d.h .: „http://theproperdomain.com“

Ich habe diesen Code:

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

Aber ich bin nicht sicher, ob es das Beste zu verwenden ist.
Bitte schlagen Sie Ihre bessere Idee vor.

bearbeiten

Mein Domain-Server ist http://theproperdomain.com wo meine Ruhe Dienste befindet.
Ich werde diesen Domain-Namen von meinem Webconfig abholen und mit dem aktuell zugreifenden Client vergleichen. Ich muss dies tun, weil ich nur eine Domäne für "domainübergreifenden Zugriff" zulassen möchte.

+0

Sie möchten die Referrer-Domain oder die Domain abrufen, an die die aktuelle Anfrage gesendet wurde? – Ramesh

Antwort

1

Sie können die Host header of HTTP/1.1 verwenden, um die Domäne zu identifizieren, an die die aktuelle Anforderung gesendet wird. Gemäß der Spezifikation diese Informationen, wenn die Anforderung fehlt Ihnen 400 Bad Request zurückkehren konnte

Um den Header zugreifen Sie HttpContext.Current.Request.Headers["HOST"]

Aber verwenden können, wenn Sie wissen möchten, von der Anwendung der Antrag gestellt wird, dann müssen Sie ein Anwendungsgeheimnis pflegen, das für jede Anwendung einzigartig ist und das autorisiert werden muss. Dies ist sicher, solange das Anwendungsgeheimnis sicher bleibt. Vermeiden Sie Referrer-Header, da es ein optionales Feld ist.

+0

Danke für die klare Erklärung, ich denke, ich brauche die "Domain, an die die aktuelle Anfrage gesendet wurde". – fiberOptics

+0

Bitte sehen Sie meine Bearbeitung. – fiberOptics

+0

@ryan Ich denke du irrst dich. Sobald Sie es im Web hosten, kann jede Person/Domain mit Ihrer URL Anrufe an sie tätigen. Alle diese Anfragen haben nur Ihre Domain. – Ramesh

Verwandte Themen