ArcGIS JS/Server 开发资源指南

跨域资源访问 CORS


屏蔽 CORS 浏览器检查

暴力的跨源读取问题的解决办法:谷歌或者chromium内核的浏览器:在浏览器快捷方式中加入命令

-args --disable-web-security --user-data-dir=C:\Users\dell\Desktop\MyChromeDevUserData

这个C:\Users\dell\Desktop\MyChromeDevUserData文件夹就是自己建
然后,需要从快捷方式那打开。这时候打开的浏览器将默认你是一个新的用户。你会发现没有原来的插件和收藏夹(如果有说明命令可能写错了)。
注意:第一次打开的过程中,需要先手动打开一下对应的连接。不然就会有连接警告


浏览器安全认证

基于 OpenSSL 方案进行证书链的生成和应用二
基于 OpenSSL 方案进行证书链的生成和应用三

文章中提到的命令,需要使用 Windows CMD 或者直接运行 OpenSSL.exe ,不能使用 PowerShell 。

尽量不要使用 OpenSSL 1.1.1i 这个版本,生成证书的时候可能
会提示缺乏部分依赖库。笔者使用版本为 1.0.2。

在使用命令生成证书的时候可能会遇到 对象 id 已存在等问题,重新打开命令行编辑器,按照当前进度继续执行命令即可。


重复处理跨域请求

ArcGIS 自带了跨域请求的解决方案,同时如果在服务器上,例如 IIS 上也设置了跨域资源共享的话,将会出现重复处理跨域请求的问题 (在浏览器中打开F12 ,查看 network 中出现问题的请求,可以看到有两个请求头 access-control-allow-origin

  • from origin ‘null’ has been blocked by CORS policy: The ‘Access-Control-Allow-Origin’ header contains multiple values ‘null, *’, but only one is allowed. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.
  1. 在 ArcGIS Server 中修改跨域请求头的设置
  2. 在 IIS 中修改设置

我这边有两台服务器,一台可以直接登陆,所以就在 IIS 中修改
在这里插入图片描述
(把 access-control-allow-origin 的设置删掉)

另外一台服务器需要远程,密码又忘了。所以在 ArcGIS Server 中修改,以下是 domain.com/arcgis/admin 中对应的设置路径
在这里插入图片描述
点击 编辑 edit,修改 AllowedOrigins 中的 * 为其他域名(域名中不能使用通配符 *),即可


问题:无法直接使用域名加webadaptorName的方式访问门户网站,需要添加端口号

原因:arcgis 未成功将门户配置 webadaptor ,可能是在调试cer证书的过程中出现了SSL相关的错误
解决办法,重新生成或使用原有自签名证书,重新设置 SSL ,并在 domain.com/portal/webapadptor 重新配置,并为门户指定 URL。

问题:电脑 无法互 ping

双方无法互 ping 或某一台无法 ping 通对方?

检查是否是域防火墙的策略,
若正确则可使用 hosts 文件上自定义域名与 IP

问题:加载天地图之后,会在缩放或更新地图的操作之后不断报出 CORS 错误

猜测可能是因为 Chrome 内核的缘故。(为了放置 CSRF 攻击,内核提高了对第三方 Cookie 调用的权限。)
对于本地服务器 127.0.0.1 和 天地图服务器而言,天地图产生的 Cookie 无法被本地服务器 127.0.0.1 调用。
等到 本地服务器再调用天地图数据时, Cookie 就不一样了。

方法就是设置信任服务器(偶尔还是不起作用)。(PS: 我因为设置服务器的时候没有写协议。导致不起作用)

            esriConfig.request.trustedServers.push("http://127.0.0.1:5500");

使用画布canvas绘制和读取IMG

            QueryImgPixel: function(x, y, img_obj) {
                var canvas_obj = document.createElement("canvas");
                var ctx = canvas_obj.getContext("2d"); // 设置在画布上绘图的环境
                ctx.canvas.width = 1000;
                ctx.canvas.height = 1000;
                ctx.drawImage(img_obj, 0, 0, 1000, 1000); // 将图片绘制到画布上,并规定起始点和画面宽度
                var imgData_obj = ctx.getImageData(0, 0, 1000, 1000); // 获取画布上的图像像素矩阵

问题 无法读取争取长度的图片数组

画布在设置绘图环境的时候,默认只有256 x 256长度的画布,需要手动设置大于等于图片数据的画布。

如何在 VS code 中启动调试

使用本机调试

下载插件 ”debugging for 你的浏览器“
配置运行的参数
在这里插入图片描述
选中断点,
点击上图中绿色三角形。开始调试
重点是后面的服务器中调试

服务器调试(本地服务器或远程服务器)

使用 LiveServer 启动服务器

将配置文件中的参数 file 注释掉,改成 url 对应的 LiveServer 的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值