`
JavaChinaren
  • 浏览: 21952 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

跨域提交form表单并转码(GBK→UTF-8)

阅读更多
A 域下的网页编码格式是 GBK    www.A.com 提交一个查询信息:搜索 XXX
B 域下的网页编码格式是 UTF-8  www.B.com 中对外有 search.do
在 A 域下提交form表单 POST 到 B 域下的某个相应的 action

通常方法:
从HTML页面提交到 action 我们可以考虑在servlet中转码再转发,不过这样好像太麻烦不如在发送的时候就编码好了再请求

FF与IE在HTML页面中解决方法及区别:
FF支持 accept-charset (W3C标准)
万恶的IE需要在提交的时候指定charset (不按照标准,万恶,当诛)

Html代码 
1.<form name="xxForm" method="post" accept-charset="utf-8" onsubmit="document.charset='utf-8';" action="http://www.B.com/search.do"> 
2.... ...  
3.<input type="submit" value="提交"> 
4.</form> 

JS提交表单,IE需要注意的问题:
如果使用的是JS方式提交表单,那么应该在document.xxForm.submit()前使用 document.charset='utf-8'; 将编码格式转换成 utf-8,此时form中的onsubmit就没有作用了 删除之

其他get方式提交表单例子:
对于百度来说就可以提交一个get请求到
http://www.baidu.com/s?wd=这里是你要搜索的东西
使用世界之窗浏览器的人会发现最后使用右上角的搜索,地址栏会有 &ie=utf-8,通过这种方式告诉百度传入的编码格式,默认在百度中搜索就不存在编码问题了

同样适用百度搜索

Url代码 
1.世界之窗:  
2.http://www.baidu.com/s?wd=hello&tn=ichuner_1_dg&ie=utf-8 
3.百度默认搜索:  
4.http://www.baidu.com/s?wd=hello 
世界之窗:
http://www.baidu.com/s?wd=hello&tn=ichuner_1_dg&ie=utf-8
百度默认搜索:
http://www.baidu.com/s?wd=hello

同样搜索 hello 这个词,因为存在跨域问题,因此世界之窗加入了编码格式字段并加入了广告成分,"tn=ichuner_1_dg" 这个估计和搜索分成有关吧...
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics