Asp.net MVC httpthandler 重定向到内部服务器

本文关键字:内部 服务器 重定向 httpthandler net MVC Asp | 更新日期: 2023-09-27 18:35:15

我想创建一个 http 处理程序,将请求发送到带有查询字符串参数的 url。因为 url 参数是后端服务器。用户无法访问它,所以我想使用代理脚本发送请求。

http://frontendserver?url=http://backendserver?x=1&y=2
  public class GeolocateRequestHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get { return true; }
        }
        public void ProcessRequest(HttpContext context)
        {
            TransferUserIfAuthenticated(new HttpContextWrapper(context));
        }
        private static void TransferUserIfAuthenticated(HttpContextBase context)
        {
            if (context.User.Identity.IsAuthenticated)
            {
                var url = context.Request.QueryString["url"];
                ??? redirect to url (locale lan server)
            }
        }
    }

我应该通过 .Net WenClient 对象还是有其他简短的方法?

Asp.net MVC httpthandler 重定向到内部服务器

WebClient用于

创建新请求并获取响应。

您可以使用其响应对象在当前上下文中进行重定向。

context.Response.Redirect(url)

编辑

我不能给你确切的工作代码,我会在理论上解释。

使用 HttpWebRequest 执行请求。获取响应并将数据重写为 context.Response

如果需要,您必须重写内容,标头(如内容类型),cookie。

var http = (HttpWebRequest)WebRequest.Create("http://example.com");
var response = (HttpWebResponse)http.GetResponse();