2015-12-23 15 views
6

私はブラウザJSPでURLを非表示/変更するにはどうすればよいですか?

アンカータグのために新しいタブでファイルを開くには、次の行を使用しています:

rs.getString(2)は、それが正しく動作しますが、問題がある

をオープンするファイルを表し

<a id="view" target="_blank" class="btn btn-info btn-xs" href="<%=rs.getString(2)%>> 

サーバのファイルの完全修飾パスを表示します(ファイルが格納されている場所)

enter image description here

セキュリティを強化するためにURLを隠したいのではなく、URLに "Attached-Proof"を文字列で表示したい

それは可能ですか?

+1

をあなたがそれを行う場合でも、「セキュリティ」のようなものがあってはなりません。 – Tiny

+0

window.open( '/ pageaddress.html'、 'winname'、 'ディレクトリ=いいえ、タイトルバー=いいえ、ツールバー=いいえ、位置=いいえ、メニューバー=いいえ、スクロールバー=いいえ、サイズ変更可能=いいえ、幅= 400、高さ= 350 ')。あなたはjavascriptを使ってあなたのページを開き、上記のコードを使用することができます – usman

+0

'window.open'イベントはブラウザ間でアドレスを隠すことはありません。私は、内容を表示するために何らかのライトボックスを使用する方がよいと思います。 http://stackoverflow.com/questions/16603308/hiding-address-bar-in-all-browsers#answer-16603781 –

答えて

1

ここでは非常に単純化された解決策があります。アイデアは単純なGETではなくフォームの投稿を行うことです。

<head> 
    <script type="text/javascript"> 
     function openFile(fileName) { 
      document.getElementById('filename').value = fileName; 
      document.getElementById('viewform').submit(); 
     } 
    </script> 
</head> 
<body> 
    <a id="view" class="btn btn-info btn-xs" href="javascript:openFile('<%=rs.getString(2)%>');">click me</a> 

    <form id="viewform" action="Attached-Proof" target="_blank" method="post"> 
     <input type="hidden" name="filename" id="filename" value=""/> 
    </form> 
</body> 

普通の古い形式の投稿でも、ファイルのパスが表示されます。これを防ぐために、サーバー側で、ファイルを読み込んで応答に書き戻すリソースを定義します。単純なサーブレットがその仕事をすることができます。

のweb.xml:

<servlet> 
    <servlet-name>view-file</servlet-name> 
    <servlet-class>com.example.ViewFileServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>view-file</servlet-name> 
    <url-pattern>/Attached-Proof</url-pattern> 
</servlet-mapping> 

そして、サーブレットはこのようなものになります。

package com.example; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class ViewFileServlet extends HttpServlet 
{ 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     response.setContentType("application/pdf"); 

     File file = new File(getServletContext().getRealPath(request.getParameter("filename"))); 

     InputStream is = null; 
     try { 
      is = new FileInputStream(file); 

      byte[] buffer = new byte[1024]; 

      int count; 
      while ((count = is.read(buffer)) > 0) 
      { 
       response.getOutputStream().write(buffer, 0, count); 
      } 

     } finally { 
      if (is != null) is.close(); 
     } 
    } 
} 
関連する問題