2016-08-04 13 views
27

Ich versuche, ein ASP.NET MVC-Webformular zu ASP.NET Core MVC zu migrieren. Momentan habe ich Probleme mit der Klasse .Wie kann ich URL-Referrer in ASP.NET Core MVC abrufen?

Die ursprüngliche Linie ist:

[HttpPost] 
    public async Task<ActionResult> ContactUsFormSubmit(ContactUs request) 
    { 
     var siteUrl = Request.UrlReferrer.ToString().ToLower(); 
     .... 
    } 

jedoch mit ASP.NET Core UrlReferrer nicht verfügbar ist. Ich habe Folgendes gefunden:

Request.Headers["Referer"] 

, die StringValues ​​anstelle einer Zeichenfolge zurückgibt. Ich bin mir nicht sicher, ob ich versuchen sollte, dieses zu verwenden oder ob es andere Lösungen für diese Situation gibt. Request.ServerVariables ist auch nicht verfügbar oder vielleicht habe ich nicht den Namespace. Meine Namensräume sind wie folgt:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.AspNetCore.Mvc; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 

Ich würde wirklich schätzen, wenn jemand mich in die richtige Richtung lenken kann.

+1

Einige Websites wie Google geben Ihnen den Referer aus Sicherheitsgründen nicht. Von Google eyes: Google möchte nicht, dass Sie den Suchtext sehen, der Teil des Referrers wäre. – Ben

+0

FYI: URL Referer ist nicht zuverlässig. – Win

Antwort

45

Sie sind fast da. Die Klasse StringValues ist nur ein Typ, mit dem ASP.NET Zeichenfolgen im Framework effizient darstellt. Besonders im HttpContext Objekt. Sie können einfach ToString() darauf aufrufen, um es in eine Zeichenfolge zu konvertieren:

string referer = Request.Headers["Referer"].ToString(); 
+0

Würden Sie dies als einen zuverlässigen Weg betrachten? Gibt es alternative Wege? –

+2

Es ist zuverlässig in Bezug auf den Zugriff auf die Eigenschaft von den Anfrage-Header, die vom Client gesendet werden. Allerdings würde ich den _value_ des Referrer-Headers, der vom Client gesendet wird, nicht als zuverlässig betrachten, da er sehr leicht zu temperieren ist. –

+8

Für diejenigen, die neugierig sind, ob Referer falsch geschrieben ist, ist es nicht. Obwohl Referrer die richtige Schreibweise ist, haben sie die Rechtschreibfehler in der HTTP-Spezifikation https://deutsch.stackexchange.com/questions/42630/referer-or-referrer/42636 –