我有一个外部网址,例如http://a.com/?id=5(不在我的项目中) 我希望我的网站能够显示此网址的内容
离。 我的网站(http://MyWebsite.com/?id=123)显示了第三方的网址(http://a.com/?id=5)内容
但我不希望客户端获得真实的网址(http://a.com/?id=5),我首先检查AUTH,然后显示该网页。
答案 0 :(得分:1)
我假设您无法控制“http://a.com/?id=5”的服务器。我认为没有办法完全隐藏用户的外部链接。他们总是可以查看HTML源代码和http请求&追溯原始位置。 部分隐藏外部网站的一种可能解决方案是在控制器上使用相当于MVC的卷曲:在验证之后,您从“http://a.com/?id=5”请求网站,然后将其返回给您的用户: ASP.NET MVC - Using cURL or similar to perform requests in application:
我假设“http://a.com/?id=5”的请求是在GET方法中:
public string GetResponseText(string userAgent) {
string url = "http://a.com/?id=5";
string responseText = String.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = userAgent;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream())) {
responseText = sr.ReadToEnd();
}
return responseText;
}
然后,您只需要在控制器中调用它。从客户端传递相同的userAgent,以便他们可以像使用Web浏览器打开网站一样查看网站:
return GetResponseText( request.UserAgent);
//request is the request passed to the controller for http://MyWebsite.com/?id=123
PS:我可能没有使用正确的MVC API,但这个想法就在那里。只需要在HttpWebRequest上查找MVC文档,使其正常工作。