C# 在代理路由的情况下获取原始请求url

C# 在代理路由的情况下获取原始请求url,c#,asp.net,asp.net-mvc,proxy,http-proxy,C#,Asp.net,Asp.net Mvc,Proxy,Http Proxy,我必须在请求期间生成URL。此URL必须指向具有绝对路径的应用程序本身(在电子邮件中链接到调用用户)。 现在我遇到的问题是,在某些情况下,应用程序运行在使用不同代理的环境中。不同的用户只能访问其中一个代理,但不能访问应用程序本身。所以我必须使用发送给代理的URL,而不是代理用来调用应用程序的URL 目前我使用HttpRequest.Current来构建URL。 在这种情况下,传递了错误的URL .net类或标准中是否有用于代理(HTTP头,…)的属性来保留原始URL?目前,我使用的解决方案不是很

我必须在请求期间生成URL。此URL必须指向具有绝对路径的应用程序本身(在电子邮件中链接到调用用户)。 现在我遇到的问题是,在某些情况下,应用程序运行在使用不同代理的环境中。不同的用户只能访问其中一个代理,但不能访问应用程序本身。所以我必须使用发送给代理的URL,而不是代理用来调用应用程序的URL

目前我使用HttpRequest.Current来构建URL。 在这种情况下,传递了错误的URL


.net类或标准中是否有用于代理(HTTP头,…)的属性来保留原始URL?

目前,我使用的解决方案不是很好,但很有效:
我使用应用程序的登录请求客户端url(登录请求发送客户端url),并将此信息存储在用户会话中。因此,我可以使用它生成所需的url。

不幸的是,网络中没有任何“标准”,如果在您的
主机中它读取了错误的url,那么唯一的选择就是向代理添加一个标题以传递到您的应用程序。对于nginx,我在conf文件中使用了如下内容:

location /couch/api/ {
        proxy_pass         https://0.0.0.0:5030;
        proxy_http_version 1.1;
 
        proxy_cache_bypass $http_upgrade;
        
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;  
        
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   X-Forwarded-Host $host; # <-- this is the saver!
    }
location/coach/api/{
代理通行证https://0.0.0.0:5030;
proxy_http_版本1.1;
代理缓存绕过$http\u升级;
代理设置头升级$http\U升级;
代理设置头连接$http\U连接;
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For;
代理集头X-Forwarded-Proto$方案;

proxy_set_header X-Forwarded-Host$Host;#代理不应更改URL。如果代理一直更改URL,它们将不会有任何用处。您是否已仔细检查了您首先是如何向代理发出请求的?我已创建了一个测试设置,以检查请求发生了什么,并且URL也发生了更改…可能不是他使用的代理并没有很好地实现……但我必须处理这种情况。(我指的是应用程序接收的URL,而不是浏览器中的URL)URL以何种方式更改?如果代理使用规则重写请求,它还需要以某种方式附加原始URL,以便在目标服务器上保持可用。但不要被代理使用完全限定的URL(包括方案和权限)所误导并发出仅包含路径/资源的上游请求。主机标头加上使用的方案加上请求的资源应仍然是相同的URL。为了说明这一点,如果不使用代理,客户端应发出代理将代表其发出的相同请求。使用“url1”调用代理并将请求重定向到带有“url2”的应用程序。在HttpRequest中,仅使用当前对象“url2”。我也找不到任何头或类似的东西。可能这只是因为代理或其在我们的测试环境中的配置,但只要可以这样做,我必须能够处理这种情况。。。
Host : 0.0.0.0:5040 <--- okay this is wrong.. it's behind proxy
X-Forwarded-For : 180.291.138.555 
X-Forwarded-Proto : https 
X-Forwarded-Host : mysupadomain.com <--- success =)