我必须在请求期间生成一个URL。此URL必须以绝对路径(电子邮件中的链接到主叫用户)引导应用程序本身。 现在我遇到的问题是,在某些情况下,应用程序在使用不同代理的环境中运行。不同的用户只能访问其中一个代理,而不能访问应用程序本身。所以我必须使用发送到代理的URL,而不是代理用来调用应用程序的URL。
目前我使用HttpRequest.Current来构建URL。 在这种情况下,提供了错误的URL。
.net类中的属性或代理标准(HTTP-Headers,...)是否有保留原始URL的属性?
答案 0 :(得分:0)
目前,我使用的解决方案虽然不是很好但工作正常: 我使用登录到应用程序来请求客户端URL(登录请求发送客户端URL)并将此信息存储在用户会话中。所以我可以用它来生成所需的URL。
答案 1 :(得分:0)
不幸的是,网络上没有任何“标准”,如果在您的Host
中它读取了错误的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!
}
应用收到的结果标头:
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 =)