Tag: url encoding

为什么Uri对不同的方案表现不同?

在与Uriclass级一起回答另一个问题时,我发现了一些对我来说很奇怪的东西: 考虑这两个Uris: var u1 = new Uri(“http://ab:33/abc%2fdef/c?d=f”); var u2 = new Uri(“foobar://ab:33/abc%2fdef/c?d=f”); 它们的区别仅在于他们的计划。 提供的标识符的所有其他元素都是相同的。 那么,为什么当我转储这些Uri实例的Segments属性时,我是否会看到u1的以下输出: / ABC / 高清/ C …但u2输出不同? / ABC%2fdef / C 为什么不同方案的解析行为不同?

ASP.Net URL编码

我正在ASP.net中实现URL重写,我的URL导致我的问题世界。 URL是从部门和类别的数据库生成的。 我希望员工能够使用适当的特殊字符向数据库添加项目,而不会破坏站点。 我在构造URL之前编码数据。 有几个问题…… IIS在到达.net之前对URL进行解码,因此无法正确解析其中包含“/”的任何内容。 ASP.net被某些页面中的“〜”无效的url搞糊涂了 我从内置测试服务器迁移到我的本地IIS服务器(XP机器),任何包含编码&(%26)的URL都会给我一个“错误请求”错误。 UrlEncode留下一些破碎的字符,如’。’ 我确实有两个关于这个主题的相关post,当时我只看到小问题不是上游的大问题。 我发现了一些注册表技巧来解决“错误请求”问题,但我将部署到共享托管环境,使其无用。 我也知道这是一个解决某些安全问题的方法所以我不想在不知道我正在打开什么样的蠕虫的情况下绕过它。 而不是试图强制.net传递原始URL,或覆盖IIS设置,我想首先制作真正安全的URL。 我会注意到我已经尝试过AntiXss.URLEncode,HttpUtility.URLEncode,URI.EscapeDataString。 我甚至尝试过双重URLEncodng等愚蠢的事情。 是否有一个实用程序可以满足我的需要,或者我真的需要自己动手。 我甚至考虑做一些Hacky,比如用一些不寻常的字符替换%。 最终结果应至少是可读的,这是首先使用URL重写的重点。 很抱歉很长的post – 我只是想确保我已经包含了所有必要的细节。 我似乎无法找到任何相关信息,这似乎是一个常见的问题 – 所以也许我错过了一些大事。 感谢您的帮助,以及对长篇解释的耐心! 为清晰起见编辑: 当我说从数据库构建url时,我的意思是目录结构是从我的数据库中的部门和类别构建的。 一些示例URLS – 的MyStore /制冷/酒吧+ Fridge.aspx 的MyStore /烹饪+ Equipment.aspx 的MyStore /厨房/切割+ Boards.asxpx 当我使用像“Beverage&Bar”或“Pastry / Decorating”这样的部门来构建我的URL时会出现问题。 尽管首先编码这些导致上述问题。 除了特殊的字符编码问题外,我的处理程序已经实现并且工作正常。

C#启动一个新的MailTo进程和HTML URL编码

我为Process类创建了一个新的MailTo扩展方法,它只是用一个包含所需mailto参数的新ProcessStartinfo填充Process。 我已经创建了一个名为FormatMailToArgument的方法(最后在右边),它将控制字符转换为它们的Url编码等价物并测试了它并且它可以工作但是有更好的方法吗? /// /// extension methods. /// public static class Processes { #region MailTo /// /// Populates the process with mailto . You may leave any /// argument as null if not needed. /// /// The process. /// The mail message. public static void MailTo(this Process process, MailMessage mailMessage) { MailTo( process, mailMessage.To.ToDelimetedString(), mailMessage.CC.ToDelimetedString(), mailMessage.Bcc.ToDelimetedString(), […]

如何在C#中对字符串进行URL编码

我们如何使用C#中的URL(RFC 1738)标准对字符串进行编码? 以下在线工具使用此标准转换字符串http://www.freeformatter.com/url-encoder.html 我想要转换的字符串的一个示例是test(brackets) ,编码的字符串应如下所示: test%28brackets%29

从查询字符串中获取U + fffd / 65533而不是特殊字符

我有一个C#.net web项目,其全球标记设置为: 当此URL为Flash应用程序时(在浏览器中手动输入URL时会出现同样的问题):c_product_search.aspx?search =kjøkken(或者:c_product_search-aspx?search = kj%F8kken 两者都返回以下字符代码: k U+006b 107 j U+006a 106 U+fffd 65533 k U+006b 107 k U+006b 107 e U+0065 101 n U+006e 110 我不太了解字符编码,但似乎ø已被赋予unicode替换字符,对吧? 我试图将全球化标签更改为: 这使得请求工作。 但是,现在,我页面上的其他搜索停止了工作。 我也尝试了以下类似的结果: NameValueCollection qs = HttpUtility.ParseQueryString(Request.QueryString.ToString(), Encoding.GetEncoding(“iso-8859-1”)); string search = (string)qs[“search”]; 我该怎么办? 亲切的问候, nitech

Response.Redirect偶尔会忽略URL编码

在我正在构建的网站中,我们需要大量的动态重定向,以保持网站各部分的流量。 我目前正在使用response.redirect来实现这一点,重定向URL是在各种按钮的回发方法后面的代码中动态生成的。 这种情况在95%的案例中都很好,但是我注意到有时URL会被严重破坏。 在一种情况下,url是URLEncoded,因为其中一个参数有时包含一个&符号,但重定向忽略了这一点并重定向到非编码版本。 即“page.aspx?qs = first%26second&qs = 2&qs = 3”被重定向到“page.aspx?qs = first&second&qs = 2&qs = 3” 发生的另一种情况是响应被完全剥离了&符号,导致频繁崩溃。 即“page.aspx?qs = 1&qs = 2&qs = 3”被重定向到“page.aspx?qs = 1qs = 2qs = 3” 有没有人有任何想法为什么会出现这些情况? 解决 对不起,这是由于我自己的白痴,从管理员重定向到非管理员(不要问),而不是在几页上再次将&s重新输入或url编码。 (捂脸)

帮助C#HttpWebRequest URI丢失其编码

HttpWebRequest有问题解码我的编码URL。 var requestUrl = “https://www.google.com/webmasters/tools/feeds/http%3A%2F%2Fwww%2example%2Ecom%2F/crawlissues/”; var request = (HttpWebRequest)WebRequest.Create(requestUrl); 查看结束请求时,URL变为: https://www.google.com/webmasters/tools/feeds/http://www.example.com//crawlissues/ 这当然会返回400 Bad请求。 我猜这是与URI类而不是HttpWebRequest的东西。 我该如何阻止这种情况发生?

如何URL编码周期?

我需要URL编码一些句点,因为我必须传递一些文档路径,就像这样 http://example.com/test.aspx?document=test.docx 因此test.docx导致我出现非法字符错误。 所以我需要把它改成 . –> %2E 我试着使用Server.UrlEncode string b = Server.UrlEncode(“http://example.com/test.aspx?document=test.docx”); 但我明白了 “http%3a%2f%2fexample.com%2ftest.aspx%3fdocument%3dtest.docx” 那么我是否必须像字符串替换一样使用并手动执行并用该代码替换所有句点?

根据RFC4648,C#:base64url

我正在根据C#中的RFC4648寻找base64url的(快速)标准实现。 我找到了HttpServerUtility.UrlTokenEncode但看起来这并不遵循RFC4648(UrlTokenEncode在末尾添加一个数字,表示已删除的=符号的数量;请参阅此处和此处 )。 例: base64编码: Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes( “AA”)); //返回“QUE =” base64url编码: HttpServerUtility.UrlTokenEncode(System.Text.Encoding.ASCII.GetBytes( “AA”)); //返回“QUE1”,但我希望“QUE”