java后端发布的接口数据是如何加密传输

来源:互联网 发布:好的java培训机构 编辑:程序博客网 时间:2024/05/19 15:19

一般情况你看到的应该不算是"加密" 而是"URL编码" (大多数情况)。
"URL编码"通常是为了处理参数里有不可用字符的问题。

比如

  • 下载时http://localhost/download?filename=新建文档+备份 副本.doc 
    这样的连接必然会有问题,中文会乱码,加号会被当作连接符,而空格会被服务器当作结束,剩下的内容就被丢弃了。

  • 所以你后台接到的请求实际上会是这样 http://localhost/download?filename=??????

  • 即便你后台强制转码new String(filename.getBytes("iso-8859-1"),"UTF-8") 
    那也只会是http://localhost/download?filename=新建文档备份

为了解决这样的问题所以就会用到URL编码,他的作用其实和html的实体字符一个意思,就是为了不让浏览器/服务器自作多情的进行解析
而且后台的服务器一般都可以自动处理URL编码,将他们还原回原来的字符串,所以你获取参数时一般不需要你手动解码,直接可以获取到解码后的原字符串。

在java里可以用java.net.URLEncoder.encode(str,charset)实现;

  • 例如刚刚那个用java可以这样写
    response.sendredirect("http://localhost/download?filename=" + URLEncoder.encode("新建文档+备份 副本.doc","UTF-8"));

  • 最终显示就会是这个样子
    http://localhost/download?filename=%e6%96%b0%e5%bb%ba%e6%96%87%e6%a1%a3%2b%e5%a4%87%e4%bb%bd+%e5%89%af%e6%9c%ac.doc

0 0
原创粉丝点击