这篇主要是对上一篇博客cesium billboard出现跨域的原理分析

https://www.cnblogs.com/SmilingEye/p/11363837.html

1.源码位置

从Billboard.js文件,找到setImage方法。

找到TextureAtlas.js文件,找到addImage方法。

找到Resource.js文件,找到fetchImage方法。

最后在Resource.js文件,loadImageElement方法为最终加载方法。

2.源码

    function loadImageElement(url, crossOrigin, deferred) {
var image = new Image(); image.onload = function() {
deferred.resolve(image);
}; image.onerror = function(e) {
deferred.reject(e);
}; if (crossOrigin) {
if (TrustedServers.contains(url)) {
image.crossOrigin = 'use-credentials';
} else {
image.crossOrigin = '';
}
} image.src = url;
}

3.分析

出现跨域主要是给image对象加入了crossOrigin属性。

crossorigin 属性不止可以用于<script>标签,还可以用与<img><video>等标签,
用于配置 CORS 的请求数据,见下表,

Keyword State Request Mode Credentials Mode
the attribute is omitted No CORS "no-cors" "omit"
"" Anonymous "cors" "same-origin"
"anonymous" Anonymous "cors" "same-origin"
"use-credentials" Use Credentials "cors" "include"

不同的crossorigin值,指定了不同的Request Mode 和 Credentials Mode。

其中,术语use credentials指的是,cookies,http authentication 和客户端ssl证书。

4.重现错误

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
var imgObj1 = new Image;
imgObj1.src = "https://www.w3school.com.cn/i/eg_tulip.jpg";
imgObj1.width = ;
imgObj1.height = ;
imgObj1.crossOrigin = 'use-credentials';
$("#box").append(imgObj1);
});
</script>
</head>
<body>
<div id="box"></div>
</body>
</html>

这段代码在菜鸟教程或者在本地存为html在打开,同样会出现跨域问题。

尝试修改

imgObj1.crossOrigin = '';

或者注释掉这段代码,重新测试(注意清理缓存)

5.如何解决跨域问题

看这篇博客https://www.cnblogs.com/SmilingEye/p/11158405.html

cesium billboard跨域问题2的更多相关文章

  1. cesium billboard跨域问题1

    群里小伙伴问道使用billboard加载图片时出现跨域问题,一般认为在服务器端设置 Access-Control-Allow-Origin: * 例如用tomcat发布图片服务,可以这样设置:http ...

  2. 基于Cesium1.26地图API下的GeoServer2.9.0服务器跨域设置

    遇到的问题: 最近基于Cesium来做3D模型的地图开发,在访问自己发布的WMS服务之后,遇到了GeoServer跨域问题. 调用这个WMS服务的时候,浏览器(我用Chrome)开发者工具报错: 控制 ...

  3. 解决ajax跨域的方法原理详解之Cors方法

    1.神马是跨域(Cross Domain)   对于端口和协议的不同,只能通过后台来解决.   一句话:同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是 跨域问题了.而为什么开 ...

  4. 16.vue-cli跨域,swiper,移动端项目

    ==解决跨域:== 1.后台 cors cnpm i -S cors 2.前端 jsonp 3.代理 webpack: myvue\config\index.js 找 proxyTable proxy ...

  5. Geoserver跨域问题

    1 Geoserver位war包,使用Tomcat发布的情况 由于geoserver为war形式,需要解决tomcat跨域问题,geoserver版本为2.9.1. (1)下载跨域war包 下载cor ...

  6. 基于nodejs中实现跨域的方法

    一般情况下跨域是通过ajax的方式请求数据,通过js在不同的域之间进行数据传输或者通信: 只有通过ajax方式获取请求的时候才会有跨域问题需要解决: 例如在本地模拟两个服务端. 一个服务端去通过aja ...

  7. Qt(QtWebEngine)加载本地网页跨域问题的总结

    目录 1. 概述 2. 详论 2.1. 传参 2.2. JS module 3. 建议 4. 参考 1. 概述 浏览器直接加载本地网页的时候,如果网页涉及到加载本地资源(如图片),会出现跨域的问题.Q ...

  8. Ajax及跨域

    概念 Ajax Ajax,Asynchronous JavaScript and XML,字面意思:异步的 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术. 用于异步地去获 ...

  9. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

随机推荐

  1. Flash播放控件属性详解

    Flash 播放控件属性详解 一.属性篇 1.AlignMode(读写)  语法:AlignMode As Long  说明:对齐方式(与SAlign 属性联动).当控件的长宽比例与影片不一致且WMo ...

  2. docker 学习1 WSL docker ,Windows docker

    获取Linux内核版本 //使用 lsb_release -a 可见我电脑上的 WSL Linux 版本是 Ubuntu的. 安装docker for ubuntu (遇到问题) 转[http://b ...

  3. 基于【 Docker】四 || Docker常用镜像安装

    一.nginx安装 1.拉取镜像:docker pull nginx 2.启动容器:docker run -d -p 80:80 nginx 3.查看nginx:ps aux | grep 'ngin ...

  4. Android开发中常见问题分析及解决

    最近公司有新的业务需求,需要开发一款APP,因为我开发过Android APP(我想告诉他们,那是4年前的事了,嘤嘤嘤),就把开发任务交给我了,当然也不是我一个人啦,让我组开发小组,说白了,就是让我来 ...

  5. 7.生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信)

    /* * 生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信) * */ public class TestProductorAndConsumerForLoc ...

  6. 不常见的sql错误处理方法(1)

    select @@global.sql_mode, mysql5.7 导致 group查询出错 set @@global.sql_mode='' # mysql重启就失效了: phpstudy -&g ...

  7. c# 动态获取http通过post传来的json数据

    //获取http通过post传来的json数据 using Newtonsoft.Json; public HttpResponseMessage Query() { var request=Syst ...

  8. c# 选择结构

  9. C# UDP发送和接收

    using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...

  10. python 学习笔记_3 输入字母,打印出要输入的星期几; 首字母无效,则继续输入,最多2次即可判断结果;否则退出。

    #coding=gbk ''' 输入字母,打印出要输入的星期几: 首字母无效,则继续输入,最多2次即可判断结果:否则退出. ''' week_list=['monday','tuesday','wed ...