2016-12-28 7 views
0

は、私のようなhttp://a.com/?id=5(ない私のプロジェクトで) 、外部のURLを持っていると私は私のウェブサイトは、このURLの内容、.net MVC:真のURLを隠すには?

EXを示したいと思います。 私のウェブサイトは、(http://MyWebsite.com/?id=123)(http://a.com/?id=5)内容

をサードパーティのURLを示していますが、私は、クライアント側は、実際のURL(http://a.com/?id=5)を取得する必要はありません、私が最初にAUTHをチェックしてからページを示しています。

+0

質問があまり明確でない –

+0

[URLの書き換えは.Net MVCで可能](http://stackoverflow.com/questions/2375256/url-rewriting-in-net-mvc) – Alexei

+2

本当に隠したいですかあなたはページにアクセスする前にユーザーが認証されていることを確認したいのですか? – Daniel

答えて

1

http://a.com/?id=5」というサーバーを制御できないとします。ユーザーに外部リンクを完全に隠す方法はないと思う。彼らはいつもHTMLソースコードとHTTPリクエストを見ることができます&元の場所をトレースバックします。 auth-ED後、あなたは「http://a.com/?id=5」からのウェブサイトを要求し、ユーザーにそれを返す: ASP.NET MVC - Using cURL or similar to perform requests in application

私は部分的に外部のサイトには、あなたのコントローラ上で、MVCのカール同等のものを使用していることを隠すために 一つの可能​​な解決策リクエストを前提とする「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; 
} 

あなたは自分のコントローラでこれを呼び出す必要があります。彼らは、彼らが自分のWebブラウザで開きまったく同じウェブサイトを見ることができるように、クライアントから同じのuserAgentを渡し:

return GetResponseText(request.UserAgent); 
//request is the request passed to the controller for http://MyWebsite.com/?id=123 

PS:私は正しいMVCのAPIを使用していないかもしれないが、アイデアがあります。正しく動作させるには、HttpWebRequestでMVCドキュメントを参照するだけです。

+0

ありがとう〜 –

+0

重要なことは、静的ファイルの相対パスを絶対パスで置き換える必要があることです。 –

+1

ええ、私はそれを言い忘れました。ウェブページに画像、jsファイル、CSSファイルなどの静的リソースがある場合は、パスを変更してからユーザーに返す必要があります。別の方法(外部サイトが常に相対パスを使用する場合のより良い方法だと思います)は、静的リソースとしてこれらのリソースをWebサイトにダウンロードし、外部Webサイトを完全に非表示にすることです – minhhn2910

関連する問題