Estou procurando uma maneira rápida, fácil e confiável de obter o HTTP Referrer do navegador em ASP.Net ( C # ). Sei que o referenciador HTTP em si não é confiável, mas quero uma maneira confiável de obter o referenciador, se estiver presente.
c#
asp.net
http
http-headers
http-referer
Chuck Le Butt
fonte
fonte
Respostas:
Você pode usar a propriedade UrlReferrer da solicitação atual:
Isso lerá o cabeçalho Referer HTTP da solicitação, que pode ou não ser fornecida pelo cliente (agente do usuário).
fonte
Request.UrlReferrer
após um postback do lado do servidor. É claroRequest.UrlReferrer
que agora terá o valor da página para a qual você está postando. Na maioria dos casos, as pessoas precisam da página anterior. Nesse caso, certifique-se de armazenar a página anterior em uma variável viewstate quando a página for carregada pela primeira vez. E então quando você acessa esta variável ela tem a página anterior de onde você veio. Por exemplo, no evento de carregamento de página de formulários asp.net, você pode fazer:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Use a
Request.UrlReferrer
propriedade.Por baixo das cenas é só verificar a
ServerVariables("HTTP_REFERER")
propriedade.fonte
UrlReferrer
faz muito mais do que uma simples ligação paraServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
retorna uma string , enquantoRequest.UrlReferrer
retorna um Uri .Explicação
A
Request.UrlReferer
propriedade lançará umSystem.UriFormatException
se o cabeçalho HTTP referenciador estiver malformado (o que pode acontecer, pois geralmente não está sob seu controle).Quanto ao uso
Request.ServerVariables
, por MSDN:Coleção Request.ServerVariables
Propriedade Request.Headers
Request.Headers
é uma escolha melhor do queRequest.ServerVariables
, uma vez queRequest.ServerVariables
contém todas as variáveis de ambiente, bem como os cabeçalhos, ondeRequest.Headers
há uma lista muito mais curta que contém apenas os cabeçalhos.Portanto, a melhor solução é usar a
Request.Headers
coleção para ler o valor diretamente. No entanto, preste atenção aos avisos da Microsoft sobre a codificação HTML do valor, se você for exibi-lo em um formulário.fonte
Referer
cabeçalho é escrito de forma diferente daHTTP_REFERRER
variável do servidor.Assim: HttpRequest.UrlReferrer Property
fonte
Estou usando .Net Core 2 mvc, este funciona para mim (para obter a página de pré-visualizações):
fonte
Uma vez que o Google leva você a este post ao pesquisar,
C# Web API Referrer
aqui está o negócio:Web API
usa um tipo diferente de chamadoRequest
normal que não inclui . Como uma solicitação normal não inclui essas informações, se você realmente precisar delas, faça com que seus clientes façam o possível para incluí-las. Embora você possa fazer com que isso faça parte do seu , a melhor maneira é usar .MVC Request
HttpRequestMessage
UrlReferrer
Web API
API Object
Headers
Primeiro, você pode estender
HttpRequestMessage
para fornecer umUrlReferrer()
método:Em seguida, seus clientes precisam definir o
Referrer Header
paraAPI Request
:E agora
Web API Request
inclui os dados de referência que você pode acessar assim a partir deWeb API
:fonte
fonte
Às vezes você deve fornecer todos os links como este
(na opção quando "Atual" não for fundado)
fonte
Pertencente a outra resposta, adicionei a cláusula de condição para obter nulo.
fonte