我想制作一个关于HTML/JS 同源政策的社区维基,希望能帮助任何人搜索这个主题.这是SO上搜索次数最多的主题之一,没有统一的wiki,所以我去:)
相同的源策略可防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性.此政策可以追溯到Netscape Navigator 2.0.
请保持示例详细,最好还链接您的来源.
这是我的代码.它试图加载Leaflet库.当我将crossDomain选项转到时true,不会触发错误回调.当我将该选项设置为false时,会触发错误回调,但它无法下载js,因为它是跨域的.
为什么这么难?这有什么解决方案吗?有一个图像占位符而不是Web地图(最初不加载它并节省页面加载时间),当用户激活地图时,应加载js.但如果失败,我想显示正常的错误消息和重试按钮.
$.ajax({
url: 'http://code.leafletjs.com/leaflet-0.3.1/leaflet.js',
success: start_map,
error: show_map_error,
dataType: 'script',
crossDomain: true
});
Run Code Online (Sandbox Code Playgroud)
更新:我试过complete回调,它也不起作用.
update2:同样适用于crossdomain $.getScript(...).fail(...).