如何从 C# 控制器重定向到 URL(带有自定义标头)

     2023-03-10     283

关键词:

【中文标题】如何从 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 需要在解释该术语时具有很大的灵活性,但... 我在玩你的样本时也注意到了一件意想不到的事情。虽然包含标头,但只是应该包含的部分,会改变重定向的目标和永久状态的部分不受影响。如果我在创建对象时使用 url1false" 然后尝试使用注入的将其更改为 *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【问题描述】:在我的控制器中单击时无法让我的应用切换到另一个页面。如果... 查看详情