gpt4 book ai didi

c# - HttpHeaders.TryAddWithoutValidation 的目的是什么?

转载 作者:太空狗 更新时间:2023-10-29 18:20:22 28 4
gpt4 key购买 nike

在System.Net.Http.Headers命名空间中,HttpHeaders.TryAddWithoutValidation有什么区别?和 HttpHeaders.Add

具体来说,调用 Add 方法时发生了什么验证? Add() 的文档简单地说明:

"The header value will be parsed and validated."

最佳答案

使用 Reflector,这就是 TryAddWithoutValidation 方法在内部所做的事情:

if (!this.TryCheckHeaderName(name))
{
return false;
}
if (value == null)
{
value = string.Empty;
}
AddValue(this.GetOrCreateHeaderInfo(name, false), value, StoreLocation.Raw);
return true;

工作发生在 TryCheckHeaderName() 函数内部。

它归结为检查名称是否不为 null 以及它是否与 HTTP 协议(protocol)的 RFC 匹配(即它不包含无效字符等)以及根据一组不允许的检查 header header 。

这是源代码:

bool TryCheckHeaderName(string name)
{
if (string.IsNullOrEmpty(name))
{
return false;
}
if (HttpRuleParser.GetTokenLength(name, 0) != name.Length)
{
return false;
}
if ((this.invalidHeaders != null) && this.invalidHeaders.Contains(name))
{
return false;
}
return true;
}

相比之下,Add 方法与 exception(双关语意)具有相似的行为,如果 header 名称未满足TryCheckHeaderName 函数。

关于c# - HttpHeaders.TryAddWithoutValidation 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14990620/

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