因此,我的應用程式偶然進行了身份驗證管理,以前所有標頭都添加到負載均衡器中。新方法有效,為了不必重寫代碼,我們使用角度攔截器在 HTTP 請求中注入標頭
HttpContext.Current.Response.AddHeader("ICAM_RIOT", "RIOT");
private void hasResponseHeaderCollection(string headerName, string Value)
{
if (!HttpContext.Current.Response.Headers.AllKeys.Any(k => string.Equals(k, headerName)))
{
HttpContext.Current.Response.AddHeader(headerName, Value);
}
}
private string GetHeaderStringValue(string headerName)
{
return HttpContext.Current.Request.Headers[headerName] ?? "";
}
請看照片,
所有標題都是大寫
當在 .Net api 端收到時,它們是駱駝案
例如 ICAM_MAIL 變成 Icam_mail
我什至嘗試在 .net 端添加一個全部大寫的回應標題,它也回傳駱駝案
客戶端標頭
回應頭
uj5u.com熱心網友回復:
HTTP 標頭不區分大小寫。每當您通過 Key 查找標頭值時,它都需要是不區分大小寫的匹配。
Request.Headers[headerName] 為您處理此問題,但Response.Headers.AllKeys.Any(...)不會因為您在進行自己的字串比較,默認為區分大小寫的匹配。使用過載的string.Equals,允許一個StringComparison物件和使用StringComparer.InvariantCultureIgnoreCase。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/406518.html
標籤:
上一篇:無法反序列化當前JSON物件C#
下一篇:如何正確進行單元測驗聚合根?
