服务器端URL编码

时间:2014-05-13 05:43:40

标签: java javascript html servlets

我们如何通过URL / HTML编码消毒潜在的危险角色& (<>“; /)在服务器端,我在jsp页面中使用encodeURI()和escape()在客户端编码,我在我的java文件中使用URLEncoder.encode()到handel服务器端但是它不编码。

1 个答案:

答案 0 :(得分:1)

String needsEncodingPart = "?!@#$%^&*() <>/\"'[]{}\"";
String baseURL = "http://url:80/test";
String encodedPart = URLEncoder.encode(needsEncodingPart,"UTF-8").replace("+", "%20");
System.out.println(baseURL + "/" +  encodedPart);
  • 需要替换为&#34;%20&#34;因为URLEncoder基本上使用HTML类型的编码,用+
  • 替换空格

第二种方式是使用java.net.URI

URL url =  new URL("http://url:80/test/test1?!@#$%^&*() <>/\"'[]{}\"");
URI uri = null;
uri = new URI(url.getProtocol(), url.getHost() + ":" + url.getPort(), url.getPath(), url.getQuery(), null);

uri.toString()将返回编码的url。但是遇到#遇到的情况可能会在编码时产​​生一些问题。

谢谢, 拉夫

相关问题