gpt4 book ai didi

asp.net - URL 编码的冒号在 400 Bad Request 中解析

转载 作者:行者123 更新时间:2023-12-04 18:12:44 26 4
gpt4 key购买 nike

为什么这个 url 解析为 400 - Bad Request?

http://localhost:2785/api/ticker/Web.App.QuotesReaders/search=se%3Aabb

我的环境是 Visual Studio 2010、MVC 4,使用的 Controller 是 WebApiController。

%3A 是 URL 编码的冒号。

解决方案

这出于某种原因有效:

http://localhost:2785/api/ticker?className=Web.App.QuotesReaders&search=se%3Aabb

...这意味着,我无法在 global.asax.cs 中指定此路由:

/api/ticker/{className}/{search}

……也不是这个……
/api/ticker/{className}/search={search}

... 但是这个 ...
/api/ticker

更多信息: http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx

最佳答案

似乎 ASP.net 不允许在“?”之前有冒号。在 URL 中,即使它被编码为 %3A。

例如,这些将不起作用

http://foo.org/api/persons/foo:bar
http://foo.org/api/persons/foo%3abar

但这有效:
http://foo.org/api/persons?id=foo%3abar

在所有示例中,我们希望 ASP.NET MVC 将“foo:bar”作为 id 参数传递,并正确解码。我刚刚用 MVC4 对此进行了测试,它似乎有效。令人讨厌的是,它不接受问号前的 URL 编码,但我相信这是有充分理由的。可能将问号之前的所有内容保留为有效的 URL 以及问号之后的任何参数。

关于asp.net - URL 编码的冒号在 400 Bad Request 中解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066188/

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