.NET Uri 类查询缺少分号保留字符,简单的解决方法吗?

发布于 2024-10-05 06:35:24 字数 440 浏览 4 评论 0原文

https://msdn.microsoft.com/en-us /library/system.uri.query.aspx 和这个 https://ietf.org/ rfc/rfc1738.txt 表明 .Net Uri 类无法将分号识别为表示 URL 中查询的可接受字符。

这只需要一行左右即可解决,但我喜欢干净的代码。如果有一个解决方案允许我不在 .Net Uri 类集之外进行字符串解析,我会更喜欢。是否有任何现有的 .Net 代码可以处理分号以将其识别为 URL 中查询的一部分?

This https://msdn.microsoft.com/en-us/library/system.uri.query.aspx and this https://ietf.org/rfc/rfc1738.txt suggest that the .Net Uri class does not recognize the semicolon as an acceptable character to represent a query in a URL.

This only requires one line or so to workaround, but I like my code clean. If there is a solution that allows me to not do string parsing myself outside the .Net set of Uri classes, I'd prefer that. Is there any existing .Net code that handles semicolons for recognizing them as part of a query in a URL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七禾 2024-10-12 06:35:24

RFC 3986 与 RFC 1738(已更新)一致,将查询定义为问号 (?) 后面的部分,并声明分号可用于分隔参数值对“适用到该部分”。

在 Prospero URI(RFC 1738 中给出的唯一使用分号的情况)中,分号指示 URI 路径中的参数和参数值 - 而不是查询。

HTTP URI 在其查询中确实使用了分号,但仅在 ? 之后,例如 http://example.net/search?q=something;page=2。不幸的是,实际使用从未完全取代此功能的 & 字符,并且服务器端代码(包括 ASP.NET)对它的支持很差,这限制了客户端代码采用它的能力(几乎没有浏览器这样做)。

尽管如此,在这种情况下,.NET Uri 对象仅正确地将 ? 后面的部分标识为查询,包括分号(如果存在)。它的行为是正确的。

RFC 3986 agrees with RFC 1738 (which it updates) in defining the query as a portion following a question mark (?), and in stating that a semicolon can be used to separate parameter-value pairs "applicable to that segment".

In a prospero URI (the only case given in RFC 1738 where a semicolon is shown used) semicolons indicate a parameter and parameter value in the path of the URI - not a query.

HTTP URIs do have semicolons used in their queries, but only after the ?, e.g. http://example.net/search?q=something;page=2. Unfortunately actual usage has never quite replaced the & character for this function and it is poorly supported by server-side code (including ASP.NET) which limits the ability of client-side code to adopt it (pretty much no browser does).

Still, In such cases the .NET Uri object correctly identifies only that portion following the ? as a query, including semicolons if present. Its behaviour is correct.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文