arcgis for js 4.8默认请求天地图会把http地址改成https
4.7是正常访问的,改成4.8之后就不行了,有人知道这个问题怎么解决吗?
我的引用是这样的
<script src="http://localhost/arcgis_js_api/library/4.7/init.js"></script>
天地图的扩展是这样的 这种方法在4.7是正常的,但是改成4.8的api就会报错,使用
esriConfig.request.corsEnabledServers.push( "t0.tianditu.com", "t1.tianditu.com", "t2.tianditu.com", "t3.tianditu.com", "t4.tianditu.com", "t5.tianditu.com", "t6.tianditu.com", "t7.tianditu.com"); var map = new Map({ ground: "world-elevation" }); var view = new SceneView({ container: "viewDiv", // Reference to the DOM node that will contain the view map: map // References the map object created in step 3 }); var tiledLayer = new WebTileLayer({ urlTemplate: "http://{subDomain}.tianditu.com/DataServer?T=img_w&x={col}&y={row}&l={level}", subDomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], copyright: "Map tiles by <a href=\"http://stamen.com/\">Stamen Design</a>, " + "under <a href=\"http://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>. " + "Data by <a href=\"http://openstreetmap.org/\">OpenStreetMap</a>, " + "under <a href=\"http://creativecommons.org/licenses/by-sa/3.0\">CC BY SA</a>." }); map.add(tiledLayer);
这个方式去访问地图发现在谷歌跟获取浏览器下会把http请求地址改成https,但是在ie在是正常的还是http,所以只能在ie下才能显示地图,在谷歌跟火狐下都不能显示地图
---------20180716更新-------------
我觉得这个问题应该跟localhost没关系,同样的代码只是把4.7改成了4.8就不能显示了,还是api的问题,我看了你给我发的那个连接,上面也说明推荐使用http或者https的方式来访问,
我用4.8的api访问结果
用4.7
访问的代码都一样的
我使用的浏览器是chrome 67.0.3396.99版本的,你用的是什么版本的浏览器,你用什么版本浏览器,麻烦你用最新的试一试吧,谢谢了
--------------7/17------------------------
完美解决这个问题,根据esri 大神的指点 需要用域名的方式来访问
本地直接改hosts文件来实现 C:\Windows\System32\drivers\etc
这样就能访问了
---------------------7/17----------------------------------------------------------
由于有个很坑的问题,如果每次都这样的话,一般项目要是没有买域名怎么办,一般一些项目都是ip直接访问的,那是不是用ip就不行了,后来进过大神指点,使用ip访问也是可以的;
api里面的配置文件 使用 ip来访问 不要用localhost来访问
我的引用是这样的
<script src="http://localhost/arcgis_js_api/library/4.7/init.js"></script>
天地图的扩展是这样的 这种方法在4.7是正常的,但是改成4.8的api就会报错,使用
esriConfig.request.corsEnabledServers.push( "t0.tianditu.com", "t1.tianditu.com", "t2.tianditu.com", "t3.tianditu.com", "t4.tianditu.com", "t5.tianditu.com", "t6.tianditu.com", "t7.tianditu.com"); var map = new Map({ ground: "world-elevation" }); var view = new SceneView({ container: "viewDiv", // Reference to the DOM node that will contain the view map: map // References the map object created in step 3 }); var tiledLayer = new WebTileLayer({ urlTemplate: "http://{subDomain}.tianditu.com/DataServer?T=img_w&x={col}&y={row}&l={level}", subDomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], copyright: "Map tiles by <a href=\"http://stamen.com/\">Stamen Design</a>, " + "under <a href=\"http://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>. " + "Data by <a href=\"http://openstreetmap.org/\">OpenStreetMap</a>, " + "under <a href=\"http://creativecommons.org/licenses/by-sa/3.0\">CC BY SA</a>." }); map.add(tiledLayer);
这个方式去访问地图发现在谷歌跟获取浏览器下会把http请求地址改成https,但是在ie在是正常的还是http,所以只能在ie下才能显示地图,在谷歌跟火狐下都不能显示地图
---------20180716更新-------------
我觉得这个问题应该跟localhost没关系,同样的代码只是把4.7改成了4.8就不能显示了,还是api的问题,我看了你给我发的那个连接,上面也说明推荐使用http或者https的方式来访问,
我用4.8的api访问结果
用4.7
访问的代码都一样的
我使用的浏览器是chrome 67.0.3396.99版本的,你用的是什么版本的浏览器,你用什么版本浏览器,麻烦你用最新的试一试吧,谢谢了
--------------7/17------------------------
完美解决这个问题,根据esri 大神的指点 需要用域名的方式来访问
本地直接改hosts文件来实现 C:\Windows\System32\drivers\etc
这样就能访问了
---------------------7/17----------------------------------------------------------
由于有个很坑的问题,如果每次都这样的话,一般项目要是没有买域名怎么办,一般一些项目都是ip直接访问的,那是不是用ip就不行了,后来进过大神指点,使用ip访问也是可以的;
api里面的配置文件 使用 ip来访问 不要用localhost来访问
7 个回复
zapzqc
赞同来自: swaggyP 、许丹石
https://developers.arcgis.com/javascript/latest/guide/release-notes/index.html#request-modification
算是4.8新增的特性,凡是通过localhost访问的系统地址,请求会自动改为https。
部署的时候不会有问题,因为系统一般都是通过IP或域名来访问的。
只不过调试的时候稍微麻烦一点:需要把地址栏中的localhost修改为本机IP,这样就不会有问题了。
------------------------------------------2018-10-9 更新---------------------------------------------
最新的4.9版本已经修复了这个问题,不会自动改成https了。
许丹石
赞同来自:
js api本地部署时,填写的地址,是https还是http呢?
附件里的代码如图。是用的在线的4.8
-------更新-------------
我又尝试了一下。发现没毛病,右下角是系统时间。
-------7/16 更新------
我知道问题所在了。你是不是没有用http://全域名限定格式(.com)/网页.html来访问 而是用的localhost???
不要用localhost。问题即可解决。
-------7月17------
4.8的API会去走https的现象我也不太理解。有可能是出于安全性考虑。也有可能是bug。
然而在谷歌浏览器中,他的安全是比较严格的。访问https的天地图的域名 会直接被判定为不安全的网站。所以在程序里请求都失败了。对这些网站添加信任。程序里即可成功访问。 原理就像是之前访问12306铁路购票网站,也是报不安全的地址。添加信任即可。
----更新----
我又测试了一下 IP是支持的。引用js地址用http。首先把浏览器缓存清空。然后用Ip的去访问,也是走http的。而不是https
alone
赞同来自:
GIS晴天 - webgis爱好者
赞同来自:
木头杭
赞同来自:
要回复问题请先登录或注册
发起人
相关问题
问题状态