dojoConfig中的CacheBust中断路径
CacheBust in dojoConfig breaks paths
我遇到了一年前ESRI论坛上有人报告的同样问题:查询字符串出现在文件名之前,就在最后一个斜杠之后,如下所示:
http://js.arcgis.com/3.13/esri/images/symbol/sfs/?1430314495556diagonalcross.png
对我来说,这是一样的,除了我的cacheBust
不破坏.png
图像,但破坏manifest.json
文件(但不是config.json
)。似乎某个地方有一个支持的扩展名/文件名的开关,默认规则是"在最后一个斜杠后添加查询字符串"。在文件名后面添加查询字符串没有帮助-dojo在不应该出现的地方添加了另一个查询字符串。
如果这真的是由一个不敏感的白名单引起的,我需要找到并更改它。我检查了Web AppBuilder(1.4版),没有发现提到cacheBust
。另一个可能的罪魁祸首是ArcGIS JavaScript API(在我的例子中是3.15)——它在其模糊的init.js
中的第11行包含了对cacheBust
的引用,但我没能跟踪查询字符串在URL中的位置。Dojo本身(1.10)中的错误似乎不太可能,但它似乎仍然是可能的。
有什么解决方案吗?使用API下载的代码是可以的。如果没有,有人能帮我在代码中找到正确的位置,或者反驳问题的存在吗?
我下载了API,看了一下它,意识到没有限制性的白名单。querystring被过早地分配给了稍后要添加文件名的基本URL。因此,解决方案是找到添加文件名的位置,并使该进程能够识别querystring。
因此,我找到了manifest.json的分配位置(在Web AppBuilder中,文件WidgetManager
),并将其更改为处理querystring:
if (widgetJson.folderUrl.indexOf("?") > -1) {
url = widgetJson.folderUrl.substr(0, widgetJson.folderUrl.indexOf("?")) + 'manifest.json' + widgetJson.folderUrl.substr(widgetJson.folderUrl.indexOf("?"));
} else {
//this is how it looked before
url = widgetJson.folderUrl + 'manifest.json';
}
代码可能稍微优雅一些,但它是有效的。还有一些其他文件被cacheBust
篡改,但这种算法有效。
我对另一个答案中提到的代码进行了一些检查
if (widgetJson.folderUrl.indexOf("?") > -1) {
url = widgetJson.folderUrl.substr(0, widgetJson.folderUrl.indexOf("?")) + 'manifest.json' + widgetJson.folderUrl.substr(widgetJson.folderUrl.indexOf("?"));
} else {
//this is how it looked before
url = widgetJson.folderUrl + 'manifest.json';
}
我不建议采取这种做法。我使用的是v2.3。
确定要使用的url的代码在产品的3d和2d部分有所不同。此代码仅修复manifest.json文件的url问题。它并没有解决图标文件(或可能的其他文件类型)的相同问题。
此外,当您更改web appbuilder应用程序代码时,它会被复制到您创建的每个新应用程序中。相反,如果您已经创建了一个应用程序,则必须对每个现有应用程序再次进行更改。每出现一个新的文件类型问题,都会导致每个web appbuilder产品安装和使用它构建的每个应用程序都有一个修复程序。Esri的每一次新升级都可能需要重新进行完全相同的更改。
我建议在Esri修复底层代码问题之前不要将CacheBust设置为true,而不是尝试修补此问题。
- Javascript:使用绝对路径设置img src
- 如何在d3.js中返回路径的y坐标
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- JS文件的路径正在消失
- 使用onclick绘制SVG路径
- 高亮显示与数组字符串一起使用时文本插件中断
- jpm的默认Firefox路径没有'不起作用
- 如何使用jquery将base64图像路径转换为真实路径
- 可以用'吗/'在相对路径中
- AngularJS ui路由器html5模式中断路由
- 递归函数中断
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- Javascript-在文本区域中断,但不在段落中中断
- 将Windows文件路径组织到文件夹中
- dojoConfig中的CacheBust中断路径
- HtmlWebpackPlugin注入相对路径文件,这些文件在加载非根网站路径时会中断
- D3在鼠标上沿路径移动圆平移X轴上的直线时移动中断
- Django:除主页模板外,静态文件图像URL路径中断
- 我的视图的相对URL路径在部署时中断