我想将用户重定向到另一个URL,但要带状态码。
以下代码进行了重定向,但是状态代码始终为302。
public ActionResult RedirectWithStatusCode(string redirectionUrl, int statusCode)
{
try
{
Response.StatusCode = statusCode;
return Redirect(redirectionUrl);
}
catch (Exception ex)
{
Response.StatusCode = 404;
//log exception
return new EmptyResult();
}
}
使用RedirectPermanent()
中状态码301
和Redirect()
中状态码302
。
有类似RedirectToAction()
,的变体RedirectToActionPermanent()
,RedirectToRoute()
并且RedirectToRoutePermanent()
遵循相同的原理。
编辑:
回答您的问题,如果您想在较低级别上处理响应,请尝试以下操作:
public void RedirectWithStatusCode(string redirectionUrl, int statusCode)
{
try
{
Response.StatusCode = statusCode;
Response.Headers["Location"] = redirectionUrl;
Response.End();
}
catch (Exception ex)
{
Response.StatusCode = 404;
//log exception
Response.End();
}
}
测试网址:/redirectwithstatuscode?statuscode=308&redirectionurl=http://google.com
警告:您可能需要确保传递的URL属于您的域,否则您可能使您的网站遭受重定向攻击。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句