关于javascript两个小问题总结
2011-03-01 10:22
302 查看
1.javascript跨域
有一个需求:一个页面需要嵌入(iframe)另一个页面,而两个页面不在同一个域中,父页面想通过javascript调用访问子页面的javascript或者DOM。就存在了跨域安全性的问题。javascript本身是不支持跨域的,因为会产生很多安全隐患。
在网上可以搜到很多变相实现跨域的方式,如:
单向跨域:JSONP,Access Control,window.name,server proxy
双向跨域:document.domain,FIM – Fragment Identitier Messaging,Flash LocalConnection,window.postMessage,Cross Frame
跨域的方法很多,不同的应用场景我们都可以找到一个最合适的解决方案。比如单向的数据请求,我们应该优先选择JSONP或者window.name,双向通信我们采取Cross Frame,在未与数据提供方没有达成通信协议的情况下我们也可以用server proxy的方式来抓取数据。
试过很多方法,都存在各式各样的一些问题,而且本人觉得不要去欺骗浏览器实现跨域,会造成系统不稳定,就算现在没有任何问题,可以正常工作,但当IE补丁打上,系统不可避免出现问题。
2.javascript与java的通信乱码
场景:javascript中通过ajax访问java后台,java后台返回一个字符串,这个字符串包含有":"、","、中文字符。ajax回调函数中接受到此返回值,会出现乱码。
解决方法:java后台用URLEncoder.encode(str, "UTF-8")进行加密,javascript中用decodeURIComponent(data)进行解密。
之前javascript端用过decodeURI(data)进行解密,不过发现冒号":"和逗号","没有解密成功,仍是''%3A''和"%2C",原因是:
所以这里只能用decodeURIComponent(data)
有一个需求:一个页面需要嵌入(iframe)另一个页面,而两个页面不在同一个域中,父页面想通过javascript调用访问子页面的javascript或者DOM。就存在了跨域安全性的问题。javascript本身是不支持跨域的,因为会产生很多安全隐患。
在网上可以搜到很多变相实现跨域的方式,如:
单向跨域:JSONP,Access Control,window.name,server proxy
双向跨域:document.domain,FIM – Fragment Identitier Messaging,Flash LocalConnection,window.postMessage,Cross Frame
跨域的方法很多,不同的应用场景我们都可以找到一个最合适的解决方案。比如单向的数据请求,我们应该优先选择JSONP或者window.name,双向通信我们采取Cross Frame,在未与数据提供方没有达成通信协议的情况下我们也可以用server proxy的方式来抓取数据。
试过很多方法,都存在各式各样的一些问题,而且本人觉得不要去欺骗浏览器实现跨域,会造成系统不稳定,就算现在没有任何问题,可以正常工作,但当IE补丁打上,系统不可避免出现问题。
2.javascript与java的通信乱码
场景:javascript中通过ajax访问java后台,java后台返回一个字符串,这个字符串包含有":"、","、中文字符。ajax回调函数中接受到此返回值,会出现乱码。
解决方法:java后台用URLEncoder.encode(str, "UTF-8")进行加密,javascript中用decodeURIComponent(data)进行解密。
之前javascript端用过decodeURI(data)进行解密,不过发现冒号":"和逗号","没有解密成功,仍是''%3A''和"%2C",原因是:
所以这里只能用decodeURIComponent(data)
相关文章推荐
- 关于JavaScript“跨域”问题的总结
- javascript关于运动的各种问题经典总结
- 关于JavaScript中的this指向问题总结篇
- 七牛---关于JavaScript SDK各种问题总结
- javascript关于运动的各种问题经典总结
- 关于Javascript与表单结合时出现"对象不支持此属性或方法"的问题总结(不断更新中...)
- 七牛---关于JavaScript SDK各种问题总结
- 编译AMSS中关于的Python两个报错问题的总结
- pes项目中关于javascript的两个问题
- 关于Setup Factory的两个问题
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- 关于工作中声控功能开发(基于windows 7)的问题和总结
- 关于NSUserDefaults保存数据的问题总结
- 关于asp.net Session丢失问题的总结
- 总结:关于字符串长度的问题
- 一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
- 关于c++面试问题的一些总结
- 两个关于数列的Python脚本(斐波那契数列和猴子吃香蕉类问题)
- JavaScript中关于indexOf的使用方法与问题小结
- 关于应用JavaScript百度地图的各种问题