【问题标题】:special characters in url give "Bad Request" or "Illegal characters in path"url 中的特殊字符给出“错误请求”或“路径中的非法字符”
【发布时间】:2010-09-06 20:15:45
【问题描述】:

我正在使用 javascript 来请求服务器实时生成的图像。

参数在url中传递并被MVC抓取,并在“id”参数中设置给控制器。像这样:

Public Function Index(ByVal id As String) As ActionResult

如果我不使用任何特殊字符(例如“?”或引号。要发送那些我必须转义或编码此内容的内容,但我应该怎么做呢?

我尝试了 javascript escapeencodeURIComponent,但它给我“错误请求”或“路径中的非法字符”

一个示例网址是http://localhost/Imagem/Index/Question%3F,表示“问题?”

这会返回“错误请求”

【问题讨论】:

    标签: javascript asp.net-mvc url-routing escaping uri


    【解决方案1】:

    您可能会发现this blog post 很有用。正如您将看到的,有一些解决方法,但使用风险自负。如果您使用的是 .NET 4.0,请将其添加到您的 web.config:

    <system.web>
        <httpRuntime 
            requestValidationMode="2.0"
            requestPathInvalidCharacters="&lt;,&gt;,*,%,:,&amp;,\"
            relaxedUrlToFileSystemMapping="true"
        />
        ...
    </system.web>
    
    <system.webServer>
        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>
        ...
    </system.webServer>
    

    我个人建议您避免在这样的 url 中使用特殊字符。您可以使用映射函数将它们转换为其他字符,也可以仅在查询字符串参数中使用它们:http://localhost/Imagem/Index?id=Question%3F

    【讨论】:

    • 我使用了 javascript 转义,然后将 '%' 转换为其他东西,这样 IIS/MVC 就不会抱怨了。谢谢!
    【解决方案2】:

    您正在尝试访问服务器在运行时创建的图像文件。

    在上述问题中,您试图以问题的形式访问图像文件?

    图像文件或任何文件的名称中不会包含任何特殊字符,所以我认为这是非常明显的错误 - - 路径中的非法字符。

    【讨论】:

    • 这不是一个文件,它是一个包含“问题?”的图像写在上面,实时生成。
    【解决方案3】:

    感谢您的回复,但我通过使用escape 解决了这个问题,然后将% 字符转换为稍后我将在我的服务器代码中更改回 % 并自行取消转义的内容。

    在客户端脚本中:

    myImg.src = "../../Imagem/Index/" + escape(myValue).replace(/\%/g, "_-_");
    

    在控制器中:

    Public Function Index(ByVal id As String) As ActionResult
        id = id.Replace("_-_", "%")
        id = HttpUtility.UrlDecode(id, System.Text.Encoding.Default())
        Return New ImageResult(CreateImage(id))
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-19
      • 2015-12-23
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2023-02-01
      相关资源
      最近更新 更多