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下才能显示地图,在谷歌跟火狐下都不能显示地图

QQ截图20180712222438.png


QQ截图20180712222554.png


QQ截图20180712222848.png


QQ截图20180712222951.png


 
---------20180716更新-------------
我觉得这个问题应该跟localhost没关系,同样的代码只是把4.7改成了4.8就不能显示了,还是api的问题,我看了你给我发的那个连接,上面也说明推荐使用http或者https的方式来访问,
QQ截图20180716142008.png

我用4.8的api访问结果
QQ图片20180716142626.png

用4.7
QQ图片20180716142634.png

访问的代码都一样的
QQ图片20180716142650.png

 
我使用的浏览器是chrome 67.0.3396.99版本的,你用的是什么版本的浏览器,你用什么版本浏览器,麻烦你用最新的试一试吧,谢谢了
 
 
--------------7/17------------------------
完美解决这个问题,根据esri 大神的指点 需要用域名的方式来访问
本地直接改hosts文件来实现 C:\Windows\System32\drivers\etc
QQ截图20180717093118.png

这样就能访问了

QQ截图20180717093301.png

 
---------------------7/17----------------------------------------------------------
由于有个很坑的问题,如果每次都这样的话,一般项目要是没有买域名怎么办,一般一些项目都是ip直接访问的,那是不是用ip就不行了,后来进过大神指点,使用ip访问也是可以的;
api里面的配置文件 使用 ip来访问 不要用localhost来访问

QQ图片20180717122421.jpg



 
已邀请:

zapzqc

赞同来自: swaggyP 许丹石

QQ图片20180805113800.png

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了。

QQ截图20181009175455.jpg

 
 
 

许丹石

赞同来自:

当前使用的网页 ,是通过Http还是通过https访问的呢?
js api本地部署时,填写的地址,是https还是http呢?
附件里的代码如图。是用的在线的4.8
rutu.png

-------更新-------------
我又尝试了一下。发现没毛病,右下角是系统时间。
cs.png

-------7/16 更新------
我知道问题所在了。你是不是没有用http://全域名限定格式(.com)/网页.html来访问 而是用的localhost???
不要用localhost。问题即可解决。
-------7月17------
QQ截图20180717091401.png

4.8的API会去走https的现象我也不太理解。有可能是出于安全性考虑。也有可能是bug。
然而在谷歌浏览器中,他的安全是比较严格的。访问https的天地图的域名 会直接被判定为不安全的网站。所以在程序里请求都失败了。对这些网站添加信任。程序里即可成功访问。 原理就像是之前访问12306铁路购票网站,也是报不安全的地址。添加信任即可。
----更新----
我又测试了一下 IP是支持的。引用js地址用http。首先把浏览器缓存清空。然后用Ip的去访问,也是走http的。而不是https
 

alone

赞同来自:

是这样的,我把之前4.7实现访问天地图的方式,改成4.8的api发现,在谷歌跟火狐浏览器下会把http访问改成https,我是本次部署的,在iis下面,大神方便加你QQ嘛?可以详细聊一下,谢谢了

GIS晴天 - webgis爱好者

赞同来自:

arcgis api4.8真的是有问题,本地部署的时候把https 改成http  进行测试时,总是发现有https请求,导致报错,arcgis api4.7可以正常显示,换了地址就不行。

木头杭

赞同来自:

遇到同样的问题,确实是这样,4.7正常访问,4.8的某些请求就会变成https,很奇怪,比如请求其他js文件的时候是正常的,但请求workers.js的时候就变成https了。另外个人觉得改成域名的方式访问太麻烦了,并不实用,因为不可能因为你的api会把http变成https而要求团队里面的所有人在开发的时候都要改成域名访问,毕竟开发环境下还是localhost最方便。

要回复问题请先登录注册