2 Stimmen

Wie kann die anfordernde Domain-URL in Rest abgerufen werden?

In der Datei Global.asax.cs habe ich den Code, der den Zugriff auf verschiedene Domänen ermöglicht.

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

        if( // Die anfordernde 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 bevor mein REST-Projekt den Zugriff auf verschiedene Domänen erlaubt, muss es zuerst überprüfen, ob die anfordernde Domäne mit der richtigen Domäne übereinstimmt, z. B.: "http://theproperdomain.com"

Ich habe diesen Code:

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

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

Bearbeiten

Mein Domänenserver ist http://theproperdomain.com, wo meine REST-Services liegen.
Ich werde diesen Domänennamen aus meiner Webkonfiguration abrufen und mit dem aktuellen zugreifenden Client vergleichen. Ich muss das tun, weil ich nur eine Domäne für "Zugriff auf verschiedene Domänen" zulassen möchte.

1voto

Ramesh Punkte 12657

Sie können den Host-Header von HTTP/1.1 verwenden, um die Domain zu identifizieren, an die die aktuelle Anforderung gesendet wird. Gemäß der Spezifikation könnten Sie bei fehlenden Informationen zu dieser Anfrage einen 400 Bad Request zurückgeben.

Um auf den Header zuzugreifen, können Sie HttpContext.Current.Request.Headers["HOST"] verwenden.

Wenn Sie jedoch wissen möchten, von welcher Anwendung die Anfrage stammt, müssen Sie ein Anwendungspasswort pflegen, das für jede Anwendung eindeutig ist und autorisiert werden muss. Dies ist sicher, solange das Anwendungspasswort sicher bleibt. Vermeiden Sie die Verwendung des Referrer-Headers, da es ein optionales Feld ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X