跨域提交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 (不按照标准,万恶,当诛)

<form name="xxForm" method="post" accept-charset="utf-8" onsubmit="document.charset='utf-8';" action="http://www.B.com/search.do">
... ...
<input type="submit" value="提交">
</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,通过这种方式告诉百度传入的编码格式,默认在百度中搜索就不存在编码问题了

同样适用百度搜索

世界之窗:
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" 这个估计和搜索分成有关吧...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值