【问题标题】:Url as parameter gets intercepted作为参数的 URL 被拦截
【发布时间】:2010-09-17 06:30:17
【问题描述】:

在我的 asp.net mvc 应用程序中,我想检查某个 url 是否返回有效响应。 因此,我将 url 发送到一个测试 HttpWebRequest.GetResponse()

的方法

在我的开发服务器 (vs2008) 上它工作得很好。 但是,当部署在生产服务器上时,它会返回错误请求。 该方法永远不会被命中,并且我的 asp.net 自定义错误页面没有被使用。

有什么想法吗?

【问题讨论】:

    标签: c# .net asp.net-mvc bad-request


    【解决方案1】:

    也许您遇到了 ASP.NET 的ValidateRequest 功能?您可以通过将 aspx 文件中的第一行修改为具有 ValidateRequest="false" 参数来为相关页面禁用此功能。

    例子:

    <%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" ValidateRequest="false" %>
    

    不过,您可能不想让它处于这种状态,因为请求验证有助于防止 XSS 攻击。使用 HttpUtility.UrlEncode 可能也值得尝试,如果您还没有的话。

    【讨论】:

      【解决方案2】:

      对于那些将来读过这篇文章的人: 我删除了 http:// 部分并使用 HttpUtility.UrlPathEncode 对路径进行编码,并放置一个将最后一部分作为 {*uri} 的路由。 这使我可以在参数中使用 /。

      然后 checkUri 我通过添加 http:// 重新创建 uri,然后检查此 uri 的主机是否是我期望的主机(在我的示例中为 request.url.host)。

      然后我使用我创建的 Uri 发出 httpwebrequest 并检查请求是否有响应。

      【讨论】:

      • 看到它也对你有帮助,我想我可以接受我自己的回答作为答案。
      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 2020-09-12
      • 2013-08-21
      • 2017-10-02
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2013-08-23
      相关资源
      最近更新 更多