[c#] ASP.NET Core MVC에서 URL 리퍼러를 얻으려면 어떻게하나요?
ASP.NET MVC 웹 양식을 ASP.NET Core MVC로 마이그레이션하려고합니다. 현재 Request.UrlReferrer
수업에 문제가 있습니다.
원래 줄은 다음과 같습니다.
[HttpPost]
public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
{
var siteUrl = Request.UrlReferrer.ToString().ToLower();
....
}
그러나 ASP.NET Core에서는 UrlReferrer를 사용할 수 없습니다. 다음을 찾았습니다.
Request.Headers["Referer"]
String 대신 StringValues를 반환합니다. 나는 이것을 사용 해야하는지 또는이 상황에 대한 다른 해결책이 있는지 확실하지 않습니다. Request.ServerVariables
사용할 수 없거나 네임 스페이스가 없을 수도 있습니다. 내 네임 스페이스는 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
누군가 나를 올바른 방향으로 인도 할 수 있다면 정말 감사하겠습니다.
답변
거의 완료되었습니다. 이 StringValues
클래스는 ASP.NET이 프레임 워크에서 문자열을 효율적으로 표현하는 데 사용하는 유형일뿐입니다. 특히 HttpContext
개체에서. ToString()
이를 호출 하여 문자열로 변환 할 수 있습니다 .
string referer = Request.Headers["Referer"].ToString();
답변
asp.net 코어 2 사용 기준 GetTypedHeaders
RequestHeaders header = request.GetTypedHeaders();
Uri uriReferer = header.Referer;
답변
URL 리퍼러를 얻는 방법은 다음과 같습니다.
@{
string referer = Context.Request.Headers["Referer"].ToString();
Uri baseUri = new Uri(referer);}
<form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
답변
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
마법의 끈없이 받아 들여진 대답과 거의 같음
답변
이것은 작동합니다 (.NET Core 3.1에서 테스트 됨).
Request.GetTypedHeaders().Referer
Request
은 BaseController
및 의 속성이므로 둘 HttpContext
중 하나에서 가져올 수 있습니다.
예를 들어 컨트롤러 작업에서 참조 페이지로 리디렉션하려면 다음과 같이하십시오.
public IActionResult SomeAction()
{
return Redirect(Request.GetTypedHeaders().Referer.ToString());
}