前端发送http请求给后端的解决方案
2016-07-01 13:50
519 查看
方案一:
方案二:
不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求?
回答是有的,就是使用Javascript先对URL编码,然后再向服务器提交,不要给浏览器插手的机会。因为Javascript的输出总是一致的,所以就保证了服务器得到的数据是格式统一的。
Javascript编码的函数,一共有三个
<form action="/cgi-bin/post-query/a.html" method="POST" id="from1"> 密码: <input type="text" name="密码" id="pwid"> <input type="button" value="确定" onclick="checkpwd()"> </form> <script> <!-- javascript 命令 --> function checkpwd(){ var pwid=document.getElementById("pwid"),//得到密码框 from1 = document.getElementById("from1");//得到需要提交的表单 if( pwid.value==888 ){ //如果密码正确 from1.submit();//提交表单 }else{ alert(对不起,密码错,请重新输入!); } </script>
方案二:
<a href=”javascript:;” onclick=”javascript:post(‘/dosomething’, {id:1,name:’Jack’})”>test</a>
锦囊一 - IE发送中文变乱码
这篇文章说的很清楚,值得一看。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求?
回答是有的,就是使用Javascript先对URL编码,然后再向服务器提交,不要给浏览器插手的机会。因为Javascript的输出总是一致的,所以就保证了服务器得到的数据是格式统一的。
Javascript编码的函数,一共有三个
编码/解码 | 功能 | 例子 |
---|---|---|
escape() unescape() | 此方法已经被废弃了. 返回一个字符的Unicode编码值. 对网址中的除了”/”“@”“+”以外的保留字符编码 | <script type="text/javascript"> document.write(escape(",/?:@&=+$#中文")) </script> 输出: %2C/%3F%3A@%26%3D+%24%23%u4E2D%u6587 |
encodeURI() decodeURI() | 对整个URL进行编码. 编码后,它输出符号的utf-8形式,并且在每个字节前加上% 对网址中的保留符号不进行编码 | <script type="text/javascript"> document.write(encodeURI(",/?:@&=+$#中文")) </script> 输出: ,/?:@&=+$#%E4%B8%AD%E6%96%87 |
encodeURIComponent() decodeURIComponent() | 对部分URL进行编码. 编码后,它输出符号的utf-8形式,并且在每个字节前加上% 对网址中的保留符号编码 | <script type="text/javascript"> document.write(encodeURIComponent(",/?:@&=+$#中文")) </script> 输出: %2C%2F%3F%3A%40%26%3D%2B%24%23%E4%B8%AD%E6%96%87 |
相关文章推荐
- HttpClient 教程 (四)
- 构建高性能ASP.NET站点之二 优化HTTP请求(前端)
- HttpClient 教程 (三)
- HttpClient 教程 (二)
- HttpClient 教程 (一)
- Apache与Nginx网络模型
- 计算机网络的性能指标
- TCP/IP TIME_WAIT状态原理
- vmware workstation问题:无法将网络更改为桥接状态:没有未桥接的主机网络适配器
- Ajax —— 一言不合就谈Ajax
- Mozilla Apache/Nginx/Lighttpd/HAProxy SSL 配置生成器
- nginx限制请求数ngx_http_limit_req_module模块
- Http响应的状态码的类别
- nginx限制连接数ngx_http_limit_conn_module模块
- HttpClient使用详解(4.3.X以上版本)
- [转]TCP协议中的三次握手和四次挥手(图解)
- charles 之 ssl proxy 设置(https抓包)
- OkHttp3Stack volley
- java_advanced_review(3)补充:利用网络套接字实现类似qq 的控制台通讯
- TCP/IP 机制的理解