我需要为传送到我们网站的网页创建请求,但我还需要能够设置主机 header 信息。我已经使用 HttpWebRequest 尝试过此操作,但标题信息是只读的(或者至少它的主机部分是)。我需要这样做,因为我们想在用户可以之前执行页面的初始请求。我们有 10 个负载平衡的 Web 服务器,因此我们需要从每个 Web 服务器请求文件。
我尝试了以下方法:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.1.5/filename.htm");
request.Headers.Set("Host", "www.mywebsite.com");
WebResponse response = request.GetResponse();
显然这行不通,因为我无法更新 header ,而且我不知道这是否确实是正确的方法。
最佳答案
虽然这是一个很晚的答案,但也许有人可以从中受益
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://192.168.1.1"));
request.Headers.GetType().InvokeMember("ChangeInternal", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, request.Headers, new object[] {"Host","www.mysite.com"});
反射(reflection)是你的 friend :)
关于c# - 在 C# 中请求网页欺骗主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359041/