使用带有响应模式的重定向的httpErrors时出现403禁止错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带有响应模式的重定向的httpErrors时出现403禁止错误相关的知识,希望对你有一定的参考价值。

我正在使用httpErrors模块在web.config中处理HttpError 404和500。 Web.Config中:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" subStatusCode="-1" />
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="404" path="/Error/Error" responseMode="Redirect"/>
  <error statusCode="500" path="/Error/Error" responseMode="Redirect"/>
</httpErrors>

处理Global.asax中的错误并执行基于404和500的操作。

    protected void Application_EndRequest()
    {
        if (Context.Response.StatusCode == 404 || Context.Response.StatusCode == 500)
        {
            Response.Clear();

            var rd = new RouteData();
            rd.Values["controller"] = "Error";
            rd.Values["action"] = "Error";

            IController controller = new ErrorController();
            controller.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
        }
    }

代码在Local和Test服务器上工作正常但在Production服务器中中断。测试方法:在URL上写入RandomText以改变路由

HTTPS://***.com/RandomText

在本地和测试服务器中,系统通过错误/错误路由重定向到自定义错误页面。但是在生产服务器中,系统在输入上面的URL时给出空白页面。系统应该重定向到自定义错误页面。在chrome中的网络选项卡下,我可以看到返回的状态代码是403。

状态代码:403禁止

我尝试了不同的方法,例如在节点下包含subStatusCode = -1,并将responseMode更改为ExecuteURL,但没有任何效果。

如果有人有任何想法,请告诉我。

谢谢!!

答案

URLScan的工作方式不同。我通过在我的解决方案中设置自定义错误页面来解决此问题。将使用重定向到控制器操作方法将不起作用。错误页面应该是静态页面。使它成为html或aspx。 Web.config代码:

 <httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" subStatusCode="-1" />
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="404" path="/Content/Error.html" responseMode="Redirect"/>
  <error statusCode="500" path="/Content/Error.html" responseMode="Redirect"/>
</httpErrors>

快乐编码!!

以上是关于使用带有响应模式的重定向的httpErrors时出现403禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

重定向到带有 SAML 响应的回调 url 时出现错误无法以角度发布

防止 Django 模板表单中的重定向

将 set-cookie 标头发送到 node.js 中的重定向 url

带有 openid / AppAuth-Android 的重定向 URI 中的多实例

在 Cloudfront 自定义错误响应中,有没有办法强制更新浏览器导航栏的重定向?

HTTP2 请求不遵循 JMeter 5.0 中的重定向