- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Uri类默认为RFC2396。对于OpenID和OAuth,我需要与RFC 3986一致的Uri转义。
从System.Uri class documentation:
By default, any reserved characters in the URI are escaped in accordance with RFC 2396. This behavior changes if International Resource Identifiers or International Domain Name parsing is enabled in which case reserved characters in the URI are escaped in accordance with RFC 3986 and RFC 3987.
<configuration>
<uri>
<idn enabled="All" />
<iriParsing enabled="true" />
</uri>
</configuration>
Uri.EscapeDataString
使用RFC 3986规则? (具体来说,是转义该RFC中定义的保留字符)
最佳答案
由于无法让Uri.EscapeDataString采取RFC 3986行为,因此我编写了自己的符合RFC 3986的转义方法。它利用Uri.EscapeDataString,然后将转义“升级”到RFC 3986合规性。
/// <summary>
/// The set of characters that are unreserved in RFC 2396 but are NOT unreserved in RFC 3986.
/// </summary>
private static readonly string[] UriRfc3986CharsToEscape = new[] { "!", "*", "'", "(", ")" };
/// <summary>
/// Escapes a string according to the URI data string rules given in RFC 3986.
/// </summary>
/// <param name="value">The value to escape.</param>
/// <returns>The escaped value.</returns>
/// <remarks>
/// The <see cref="Uri.EscapeDataString"/> method is <i>supposed</i> to take on
/// RFC 3986 behavior if certain elements are present in a .config file. Even if this
/// actually worked (which in my experiments it <i>doesn't</i>), we can't rely on every
/// host actually having this configuration element present.
/// </remarks>
internal static string EscapeUriDataStringRfc3986(string value) {
// Start with RFC 2396 escaping by calling the .NET method to do the work.
// This MAY sometimes exhibit RFC 3986 behavior (according to the documentation).
// If it does, the escaping we do that follows it will be a no-op since the
// characters we search for to replace can't possibly exist in the string.
StringBuilder escaped = new StringBuilder(Uri.EscapeDataString(value));
// Upgrade the escaping to RFC 3986, if necessary.
for (int i = 0; i < UriRfc3986CharsToEscape.Length; i++) {
escaped.Replace(UriRfc3986CharsToEscape[i], Uri.HexEscape(UriRfc3986CharsToEscape[i][0]));
}
// Return the fully-RFC3986-escaped string.
return escaped.ToString();
}
关于.net - 如何使Uri.EscapeDataString符合RFC 3986,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/846487/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
我发现 IMAPv4 有一个缺点,因为它强制用户下载整个正文(文本/HTML + 附件)。 如何编写并提出 RFC 来解决该问题? 如果您之前有撰写技术文档、提案,尤其是 RFC 的经验,请分享。 最
URLComponents.init(url:resolvingAgainstBaseURL:) 的文档说: Returns the initialized URL components object
似乎 Internet-Draft 提供了一个下载 XML 文件的链接(例如 https://tools.ietf.org/id/draft-ietf-oauth-v2-31.xml ),但我找不到下
我注意到 RFC 中的一个错误,我想报告该错误,并希望看到发布的勘误表。 有谁知道如何向 IETF 工作组正式报告错误。 IETF 是否有某种错误/错别字跟踪? 我试图给 RFC 的作者发送一封电子邮
我看到http://www.ietf.org/rfc/rfc4122.txt RFC 4122 第 4 版的最大长度是多少?换句话说,它是否始终与从文档中获取的示例字符串值的最大长度相同? f81d4
rfc-editor说 "Obsoletes xxxx" refers to other RFCs that this one replaces. "Updates xxxx" refers to o
在原生 Android 日历应用中,使用 RFC 2445 协议(protocol)创建 .ics文件。我在一些博客中发现 RFC 2445 被 RFC 5545 取代。谁能告诉我 RFC 5545
我正在将一些 Python 代码翻译为 C++。部分代码使用base 64编码。 Python 代码使用RFC 3548编码,但我使用的C++库只有RFC 4648 . 我知道 RFC 4648 已过
我的程序在线抛出这个异常,我知道它出错的原因。 我的问题是如何找到错误的地方,Java 无法捕获此异常的位置。 如何获取有关此异常的其他信息,例如此错误的 API 请求地址。 错误信息如下: 2019
我正在尝试为 multipart/related 实现一个基本的 MIME 解析器。在 C++/Qt 中。 到目前为止,我一直在为 header 编写一些基本的解析器代码,并且我正在阅读 RFC 以了
我正在尝试在 HTTP 服务器上实现 RFC 2388 以支持多部分 POST。 我正在查看专门针对内容配置的“名称”参数的规范。 根据 RFC 2388 的第 3 节,它指出: Field name
首先,一些简单的背景知识...作为与第三方供应商集成的一部分,我有一个 C# .Net Web 应用程序,它接收一个 URL,其中包含查询字符串中的大量信息。该 URL 使用 MD5 哈希值和共享 k
早上好。 我们有一个使用 SAP RFC SDK 的“经典”API 的 SAP 工作 Idoc 接口(interface)。由于不再支持它,我们需要迁移到带有新 API 的新 Netweaver RF
我正在使用一个非常 bing 和旧的软件,它与 servlet 一起工作,并且在 URL 中包含重音符号和其他奇怪的字符。 几周前软件从JDK7升级到JDK11,服务器从Tomcat6升级到Tomca
1.情景展示 tomcat 日志时不时会报出如下异常信息,到底是怎么回事? ?
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid charact
谁能告诉我白天服务器的用途是什么?我提到了一些网站,如 wikipedia ,却找不到答案。 最佳答案 Daytime Protocol 是供计算机通信的一种广泛接受的已知格式 RFC 867允许 2
是否有关于在 RFC 上撰写评论的一般指南? 最佳答案 根据IETF ,一旦发布,RFC 不会改变。勘误可以提交到editor at rfc-editor.org .对未发表的 RFC 的评论可提交至
我写了一个ABAP功能模块,如果我用我的开发者账号执行它就可以了。 如果另一个用户执行它,他会得到一个空结果。另一个用户是无法使用 SAP GUI 登录的 RFC 帐户。 我不知道如何调试它。如何执行
我是一名优秀的程序员,十分优秀!