JS

http与https协议的跨域的解决方案

最近在做一个功能, 把gmail嵌入自己的网站, 本来也不是什么大问题,但是老大要求使用https协议来保证账户和密码的安全

好不容易等到安全证书审批下来, 后台的搭了一个tomcat服务器, 打开https就准备开工了, 结果遇上该死的跨域问题

本来跨域也不难解决, 不论是子域跨域(one.aaa.com 到 two.aaa.com的跨域) 或者网站跨域(www.aaa.com到www.bbb.com)都可以用jsonp或者iframe解决

令人奔溃的的是浏览器对于域名一样,协议或端口不同的网站都认为是跨域

  • jsonp只能使用get的方式,要保证安全,只能用post方式
  • iframe的方式返回的代码没有权限调用顶层的代码

于是就卡死在这里了

网上google了好多次,都他妈的一样的文章,协议和跨域前台无法解决

跟老大们讨论了一下,总算找到了一个方法

  1. 在使用https的网站(bbb.com)是建一个页面gmail.html,在该页面执行gmail的登录和收发邮件
  2. 然后在aaa.com的页面使用iframe嵌入

最终的结果就是把gmail.html做成了一个完全自给自足的app,相当于把外站嵌进来了

无论怎样,总算把它吃进来了,不知道还有没有其他办法,欢迎各位拍砖讨论.

使用AJAX时的一些有关字符编码的问题总结

1. 如果 html 文档用 meta 标签设置字符编码为 “utf-8″ , 则 meta 标签必须放在 title 标签前面 , 否则在 IE 里面会显示空白,在不知道原因是很头痛,差点因为它发飚 了。

2. 导入 js 文件时 , 如 :

<script type=”text/javascript” src=”jslib/jquery.js”></script>

要注意 type=”text/javascript” 里面不能有空格 , 像 type=“text/javascript “

这样是错误的 , 在 FF 里面没事 , 但是在 IE 中则会没办法导入 js 文件 。

3. 如果打算在 AJAX 服务端返回 xml 文档,必须设置 contenttype ,如下:

httpServletResponse.setContentType(“text/xml;charset=UTF-8″);

其中 charset 必须为 utf-8 , 如果是 gb2312   ,在 firefox 中没事,但是在 ie 中却会获取不到返回的内容,

如果出现乱码则在代码的前面加个

httpServletRequest.setCharacterEncoding(“UTF-8″);

或者配置一个字符编码的过滤器 。

1 2 返回顶部