gpt4 book ai didi

asp.net-mvc - 如何将包含冒号的 GET 请求发送到 ASP.NET MVC2 Controller ?

转载 作者:行者123 更新时间:2023-12-02 15:03:23 26 4
gpt4 key购买 nike

这工作正常:

GET /mvc/Movies/TitleIncludes/Lara%20Croft

当我提交包含冒号的请求时,如下所示:

GET /mvc/Movies/TitleIncludes/Lara%20Croft:%20Tomb

...它会生成 400 错误。该错误表示 ASP.NET 检测到 URL 中的无效字符。

如果我尝试 url 转义,请求将如下所示:

GET /mvc/Movies/TitleIncludes/Lara%20Croft%3A%20Tomb

...这也给了我一个 400 错误。

如果我用 | 替换冒号:

GET /mvc/Movies/TitleIncludes/Lara%20Croft|%20Tomb

..这也被视为非法而被拒绝,这次是 500 错误。消息:路径中存在非法字符。

URL 转义 |导致同样的错误。

<小时/>

我真的真的不想使用查询字符串参数。

<小时/>

相关:
Sending URLs/paths to ASP.NET MVC controller actions

最佳答案

我发现URL编码不起作用,但自定义编码起作用。
我猜想 ASPNET MVC 使用文件系统来进行解析和路由,因为 URL 中的字符在文件系统中不合法,会导致 500 或 400 错误。

所以我所做的就是用 unicode 替换冒号¡ 在 javascript 端输入字符,然后在操作中执行相反的操作。像这样:

浏览器:

function myEscape(s){
return s.replace(':', '%C2%A1').trim();
}

在操作中,在使用参数之前调用此转换:

private string MyCustomUnescape(string arg)
{
return arg.Replace("¡", ":");
}

同样的方法适用于斜杠 - 只需选择一个不同的 unicode 字符即可。当然,如果您的字符串参数本身是 unicode,那么您必须对“编码”形式使用不可打印的字符。

关于asp.net-mvc - 如何将包含冒号的 GET 请求发送到 ASP.NET MVC2 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com