华为云ELB 共享性负载均衡:ELB 对 HTTPS 进行代理,无论是 HTTP 还是 HTTPS 请求,到了 ELB 转发给后端 ECS 时,都是 HTTP 请求的解决方案

HTTP、HTTPS 头部标识

ELB 对 HTTPS 进行代理,无论是 HTTP 还是 HTTPS 请求,到了 ELB 转发给后端 ECS 时,都是 HTTP 请求。这使开发者无法分辨前端的请求是 HTTP 还是 HTTPS。

ELB 在将请求转发给后端 ECS 时,头部 header 会植入 X-Forwarded-Proto:

X-Forwarded-Proto: http (前端为 HTTP 请求)
X-Forwarded-Proto: https (前端为 HTTPS 请求)

 

DEMO: 判断负载均衡转发的是http,还是https请求,使用同样的协议访问。

 

 (IsHttps(filterContext) ? "https" : "http") + loginUrl.Substring(loginUrl.IndexOf(":"));

 

/// <summary>
/// 判断当前请求是否为https
/// </summary>
/// <param name="filterContext"></param>
/// <returns></returns>
private bool IsHttps(AuthorizationFilterContext filterContext)
{
var request = filterContext.HttpContext.Request;
if (request.IsHttps)
{
return true;
}

var httpsTag = "https";

if (httpsTag.Equals(request.Scheme, StringComparison.OrdinalIgnoreCase))
{
return true;
}

foreach (var item in request.Headers)
{
if ("X-Forwarded-Proto".Equals(item.Key, StringComparison.OrdinalIgnoreCase))
{
if (StringValues.Equals(httpsTag, item.Value))
{
return true;
}
else
{
return false;
}
}
}

return false;
}

posted @   大树2  阅读(633)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2021-06-16 html,css,js,jquery
2021-06-16 数据库文件托管
2011-06-16 android 之MediaPlayer MP3播放,VideoView 视频播放,MediaRecorder 录音
2011-06-16 一培训机构设计的学习android课程内容:供大家参考
点击右上角即可分享
微信分享提示