首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL编码冒号在400坏请求中解析

问URL编码冒号在400坏请求中解析
EN

Stack Overflow用户
提问于 2012-04-08 20:23:50
回答 1查看 8.1K关注 0票数 7

为什么这个url在400-Bad请求中解析?

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

我的环境是Visual 2010,MVC 4,使用的控制器是WebApiController。

%3A是URL编码的冒号。

溶液

这样做是有原因的:

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

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

代码语言:javascript
复制
/api/ticker/{className}/{search}

..。也不是这个..。

代码语言:javascript
复制
/api/ticker/{className}/search={search}

..。但是这个..。

代码语言:javascript
复制
/api/ticker

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-20 11:41:40

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和任何参数。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10066188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档