|
楼主 |
发表于 2014-10-17 18:34:48
|
显示全部楼层
本帖最后由 linxin@msn.com 于 2014-10-17 18:44 编辑
你最好非常认真的问问你们资深的程序员,我做了二十年的程序了, 并且我之前也为你们提供过多次缺陷报告。
这个问我再说明一下:
officeViewerWindow.w 原有方法:
- getUrl:function(docPath,fileID){
- if(!this.docUrl){
- // 下面的方法是求一个url.
- var u = justep.doc.InnerUtils.getdocServerAction(docPath, "/repository/file/cache/office/"+fileID);
- // 调试u 的数值: "/x5/UI/system/service/doc/common/uploadDoc.j?dochost=http://localhost:8080/DocServer/repository/file/......."
- this.docUrl = u.indexOf(window.location.protocol) <1 ? u : window.location.protocol+"//"+ window.location.host + u;
- // 上面一行的逻辑应该是判断如果u的字符串是不以"http:" 为开头, 则添加 http://host 到 的前部。
- // 标准的逻辑代码应该为: this.docUrl = u.startWith("http:")? u: "http://host"+u
- // 但是实现代码u.indexOf(window.location.protocol) < 1 却变成了
- // this.docUrl = u.notExistsOrstartWith("http:")? u: "http://host"+u
- }
- return this.docUrl;
- },
复制代码
在 officeViewerWindow.w 打开office 文档时需要通过这个getUrl 函数 获得完整文档字节流的 url 。而且这个url 必须要以http:开头
而原有的逻辑必须依赖 url 不是以 http: 开头。 并且 内部 包含 http:
这是一个明显很滑稽的逻辑。只是非常碰巧, url 的串中host参数值是含有"http:" 参数。如果url内部的host参数串变为 https: (这是可能存在的) 将会导致系统错误, 其实 那个url 也并不合规,://等符号没有进行UrlEncode,如果host参数做了URLEncode ,可能早就发现错误了。
这个逻辑错误还是很明显的,如果那个程序员一定认为没有问题,结论只有两个
他不理解js 的那段逻辑 或者 他有点不负责任。
这是一个非常滑稽的逻辑,完全依赖于另一个意外的参数缺陷。
|
|