关键词:
【中文标题】如何从 C# 控制器重定向到 URL(带有自定义标头)【英文标题】:How to redirect to URL (with custom headers) from C# Controller 【发布时间】:2019-09-02 09:42:31 【问题描述】:我需要将用户的浏览器重定向到我的 .NET Core C# 控制器操作中的新 URL,并使用 JWT 令牌添加我自己的自定义请求标头。
这可能吗?最好的方法是什么?
其他网站建议Response.Redirect("http://www.whatever.com")
和Server.Transfer("http://www.whatever.com")
。前者重定向,但我无法让标题工作。后者我根本无法上班。 Server
需要 System.Web.HttpContext
,它已从 .NET Core 中删除。
[HttpPost]
public void RedirectWithHeaders(string token)
var payload = decodeJwtFromString(token);
var jwt = makeNewJwt(payload);
// Now go to the URL with an authorization header
此控制器操作需要接受已发布的字符串(该部分工作正常),然后重定向或以其他方式导航到添加了授权标头(由剖析的已发布字符串制成)的新页面。
【问题讨论】:
您不能使浏览器重定向到带有任何新的或更改的标头的 URL。您是否正在重定向到同一域中的 URL? 是的,在同一个域中。 【参考方案1】:在 Startup.cs 中添加 IActionContextAccessor
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
将其注入您的控制器并创建新的 RedirectResult :
public class HomeController : Controller
private readonly ILogger<HomeController> _logger;
private readonly IActionContextAccessor _accessor;
public HomeController(ILogger<HomeController> logger, IActionContextAccessor accessor)
_logger = logger;
_accessor = accessor;
public IActionResult RedirectTo()
// Create RedirectResult and add URLHelper
var result = new RedirectResult("www.google.com",true);
result.UrlHelper = new UrlHelper(_accessor.ActionContext);
result.UrlHelper
.ActionContext
.HttpContext
.Response.Redirect("www.google.com");
result.UrlHelper
.ActionContext
.HttpContext
.Response.Headers.Add("Just-Token", new StringValues("JustToken"));
return result;
使用 curl -i cmd 响应:
curl -i localhost:5000/Home/redirectTo
HTTP/1.1 301 Moved Permanently
Date: Thu, 02 Apr 2020 13:09:52 GMT
Server: Kestrel
Content-Length: 0
Location: google.com
Just-Token: JustToken
【讨论】:
我过早地否决了这个答案。我不断被重定向到我自己的域,例如“localhost:1234/Home/redirectTo/www.google.com”。我做了这个修改并且成功了:var result = new RedirectResult("https://www.google.com", true")
我刚刚使用它来添加 Header 以重定向 .. 而不仅仅是重定向 .
工作得很好!
在我看来,插入一个新的服务似乎非常笨拙,而且对于这个巨大的.ActionContent.HttpContext.Response.Headers.Add
东西来说相当尴尬。不可否认,它有效。然而,当事情变得如此复杂时,这通常表明我们正在反对这项技术,而不是使用它。我不会以任何方式质疑你的技能,伙计。只是好奇是否有更简单的方法。通常,MS 以某种方式构建 .NET,以便使常见任务变得容易。这在某种程度上是一项常见的任务。将其称为 easy 需要在解释该术语时具有很大的灵活性,但...
我在玩你的样本时也注意到了一件意想不到的事情。虽然包含标头,但只是应该包含的部分,会改变重定向的目标和永久状态的部分不受影响。如果我在创建对象时使用 url1 和 false" 然后尝试使用注入的将其更改为 *url1 和/或 true服务,执行的调用仍然指向原来设置的地址。Cakephp 内部从控制器重定向到另一个控制器
】Cakephp内部从控制器重定向到另一个控制器【英文标题】:Cakephpinternalredirectfromcontrollertoanothercontroller【发布时间】:2011-05-1302:45:38【问题描述】:更新:我写了一些关于在php中使用header的错误陈述;所以忘记那部分:)我想要的... 查看详情
登录后 Spring MVC 控制器重定向到某个 URL
】登录后SpringMVC控制器重定向到某个URL【英文标题】:SpringMVCcontrollerredirecttosomeURLafterlogin【发布时间】:2012-12-2823:44:43【问题描述】:我有一个带有如下处理程序的SpringMVC控制器:@RequestMapping(value="/account/login",method=RequestMethod.GE... 查看详情
ios如何将自定义控制器重定向obj-c代码放在自定义视图中
】ios如何将自定义控制器重定向obj-c代码放在自定义视图中【英文标题】:iosHowtoputcustomcontrollerredirectobj-ccodeincustomview【发布时间】:2016-04-1109:48:01【问题描述】:我是ios应用程序开发的新手,也是Objective-c编码的新手。我不知道... 查看详情
使用弹簧控制器重定向到外部链接[重复]
】使用弹簧控制器重定向到外部链接[重复]【英文标题】:Redirecttoexternallinkusingspringcontroller[duplicate]【发布时间】:2014-07-0421:28:31【问题描述】:我遇到了一个案例,我必须将链接从特定控制器重定向到外部url。我尝试过很多类... 查看详情
在 ASP.NET MVC 中使用 AJAX 方法时使用 C# 控制器重定向到页面
】在ASP.NETMVC中使用AJAX方法时使用C#控制器重定向到页面【英文标题】:RedirecttoapageusingC#controllerwhileusingAJAXmethodinASP.NETMVC【发布时间】:2018-12-0300:24:10【问题描述】:我正在使用C#ASP.NETMVC,想知道有没有办法在成功的情况下从控... 查看详情
从 ASP.NET MVC 控制器重定向到外部 URI
】从ASP.NETMVC控制器重定向到外部URI【英文标题】:RedirecttoexternalURIfromASP.NETMVCcontroller【发布时间】:2010-12-0516:19:20【问题描述】:我正在尝试从操作方法重定向到外部url,但无法使其正常工作。有人能解释一下我的错误吗?publi... 查看详情
将 segue 从一个视图控制器重定向到另一个视图控制器
】将segue从一个视图控制器重定向到另一个视图控制器【英文标题】:Redirectseguefromoneviewcontrollertoadifferentone【发布时间】:2015-09-0407:24:57【问题描述】:对于这个看似基本的问题,我找不到答案。假设我有一个带有两个视图控制... 查看详情
使用“redirecttoaction”从控制器重定向到哈希(代码片段)
您好我想从MvcController返回一个锚点控制器名称=DefaultController;publicActionResultMyAction(intid)returnRedirectToAction("Index","region")这样,当指向索引时,url是http://localhost/Default/#region以便<ahref=#region>thecontentshouldbefocushere</a>我不是问你... 查看详情
如何在 IOS 应用程序中从视图控制器重定向回主故事板
】如何在IOS应用程序中从视图控制器重定向回主故事板【英文标题】:HowtoredirectbackfromViewcontrollertoMainStoryboardinIOSapp【发布时间】:2013-05-2405:36:24【问题描述】:在我的IOS应用程序中,我有一个关于从视图控制器重定向到主故事... 查看详情
从基本控制器重定向到操作方法
】从基本控制器重定向到操作方法【英文标题】:redirecttoactionmethodfrombasecontroller【发布时间】:2013-06-2023:35:04【问题描述】:我在我的基本控制器类中初始化了方法,每当执行任何操作方法时都会调用该方法。在每个操作方法... 查看详情
如何使用 $.get() 检测服务器重定向
】如何使用$.get()检测服务器重定向【英文标题】:Howtodetectaserverredirectwith$.get()【发布时间】:2014-04-0106:56:07【问题描述】:没有重复的问题这个问题不是上述问题之一的重复,因为我对服务器响应无法控制,就像上面其他两个... 查看详情
从 MVC 4 控制器重定向到 .aspx 页面
】从MVC4控制器重定向到.aspx页面【英文标题】:Redirecttoan.aspxpagefromaMVC4Controller【发布时间】:2015-03-1204:17:06【问题描述】:我对MVC很陌生,并且一直在努力在各个页面之间进行重定向。我正在尝试从amController重定向到项目根文... 查看详情
通过来自 React App 的 GET 请求从 express 服务器重定向到外部 URL
...务器B->API服务器(在我的例子中是Node和Express)我都可以控制。我在服务器B上启用 查看详情
在spring boot中将控制从一个控制器重定向到另一个控制器
】在springboot中将控制从一个控制器重定向到另一个控制器【英文标题】:Redirectingcontrolfromonecontrollertoanotherinspringboot【发布时间】:2018-02-1105:01:27【问题描述】:我正在尝试将控制从一个控制器重定向到另一个控制器,但它没有... 查看详情
Nest.Js 从一个控制器重定向到另一个
】Nest.Js从一个控制器重定向到另一个【英文标题】:Nest.JsRedirectfromacontrollertoanother【发布时间】:2019-10-1706:25:24【问题描述】:所以我有这个模块:@Module(imports:[],controllers:[AppController,AnotherController],providers:[],)在AppController的某些... 查看详情
如何从我的 C# 代码中通过自定义 url 方案访问传递到我的应用程序的值?
】如何从我的C#代码中通过自定义url方案访问传递到我的应用程序的值?【英文标题】:HowcanIaccessthevaluespassedintomyappviaacustomurlschemefromwithinmyC#code?【发布时间】:2015-07-1420:58:05【问题描述】:我正在开发一个XamarinForms应用程序。... 查看详情
Spring Security 自定义登录处理 URL 始终重定向到故障处理程序
】SpringSecurity自定义登录处理URL始终重定向到故障处理程序【英文标题】:SpringSecurityCustomLoginProcessingURLalwaysredirectingtofailurehandler【发布时间】:2019-07-0508:06:35【问题描述】:我正在开发一个带有基于注释配置的spring安全代码。... 查看详情
Ionic Framework:无法从我的控制器重定向到另一个页面?
】IonicFramework:无法从我的控制器重定向到另一个页面?【英文标题】:IonicFramework:Can\'tredirecttoanotherpagefrommycontroller?【发布时间】:2015-02-2020:11:01【问题描述】:在我的控制器中单击时无法让我的应用切换到另一个页面。如果... 查看详情