当前位置: 首页 > news >正文

arcgis api for js 中使用API的代理页面(跨越配置)

以下仅作为自己阅读官网api的对reques的理解做的备忘笔记。一知半解,仅供参考。

1、获取或者构建第三方代理

官网解释:代理在其自己的 Web 服务器上安装并运行,而不是在 Esri 服务器或安装了 ArcGIS Enterprise 的计算机上安装和运行(除非您的 Web 服务器还托管 ArcGIS Enterprise 实例)。

个人理解:通常使用了arcgis api for js的应用项目,基本都会买arcgis产品,安装在指定服务器上(例如这里的服务器地址端口号是192.168.0.11:8001),并在此地址端口号进行服务的发布。而使用的项目不一定会安装在同一个服务器之上。即:esri服务器与应用项目服务器并不是同一个。

2、代理路径配置

官网解释:为了使应用程序通过代理路由请求,必须向应用程序添加代码,以定义代理的托管位置。如果应用程序中的所有请求都使用相同的代理,请使用请求对象的代理Url 属性指定位置。

require(["esri/config"], function(esriConfig) {esriConfig.request.proxyUrl = "/proxy/Java/proxy.jsp";
});

官网解释:还可以使用特定的代理规则配置应用程序。这些规则指示代理使用具有相同 URL 前缀的特定资源。当应用程序尝试通过此 URL 访问资源时,将通过指定的代理发送请求。请求的 proxyRules 属性是列出所有这些代理规则的对象。要填充它,请使用 urlUtils.addProxyRule()。

require(["esri/core/urlUtils"], function(urlUtils) {urlUtils.addProxyRule({urlPrefix: "http://localhost:6080",//地图服务地址前缀要请求的地址proxyUrl: "http://localhost:8080/Java/proxy.jsp"//部署的代理文件地址});
});

3、request.interceptors拦截器

允许开发人员在发送请求之前或之后修改请求。 将使用与请求 URL 匹配的第一个拦截器。

//官网示例
const featureLayerUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0";esriConfig.request.interceptors.push({// set the `urls` property to the URL of the FeatureLayer so that this// interceptor only applies to requests made to the FeatureLayer URLurls: featureLayerUrl,// use the BeforeInterceptorCallback to check if the query of the// FeatureLayer has a maxAllowableOffset property set.// if so, then set the maxAllowableOffset to 0before: function(params) {if (params.requestOptions.query.maxAllowableOffset) {params.requestOptions.query.maxAllowableOffset = 0;}},// use the AfterInterceptorCallback to check if `ssl` is set to 'true'// on the response to the request, if it's set to 'false', change// the value to 'true' before returning the responseafter: function(response) {if (!response.ssl) {response.ssl = true;}}
});//拦截,在所有服务地址头部添加需要的头部信息(放在加载地图资源之后,调用服务之前)
self.esriConfig.request.interceptors = []self.esriConfig.request.interceptors.push({before: function (params) {const A = "A"const B = "B"params.requestOptions.headers = {A: A,B: B}}});

相关文章:

  • 【docker 】Dockerfile指令学习
  • 爬虫工作量由小到大的思维转变---<第三章 搞多大的盘>
  • c++程序设计定义一个 (图书)类,在该类定义中包括
  • 【数据结构】树状数组总结
  • 推荐一款好用的包含表格识别的OCR网站
  • Debian系统安装OpenVPN
  • javaWebssh汽车销售管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  • Flink系列之:窗口关联
  • HTML面试题
  • 【Spark面试】Spark面试题答案
  • 修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)
  • Oracle-应用会话集中在RAC集群一个节点问题
  • 使用 ?? 重新定义逻辑以获得更严格、更安全的 JavaScript 默认值
  • Vue中的数据变化监控与响应——深入理解Watchers
  • 数据分析为何要学统计学(10)——如何进行比率检验
  • [译]如何构建服务器端web组件,为何要构建?
  • Akka系列(七):Actor持久化之Akka persistence
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • LeetCode29.两数相除 JavaScript
  • nodejs调试方法
  • Quartz初级教程
  • vue:响应原理
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 前端知识点整理(待续)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 学习笔记:对象,原型和继承(1)
  • 一道面试题引发的“血案”
  • 智能合约Solidity教程-事件和日志(一)
  • NLPIR智能语义技术让大数据挖掘更简单
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​secrets --- 生成管理密码的安全随机数​
  • ​插件化DPI在商用WIFI中的价值
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (篇九)MySQL常用内置函数
  • (十八)SpringBoot之发送QQ邮件
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一) storm的集群安装与配置
  • (原創) 未来三学期想要修的课 (日記)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Linux整合apache和tomcat构建Web服务器
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .net core控制台应用程序初识
  • .net 提取注释生成API文档 帮助文档
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .NET建议使用的大小写命名原则
  • .Net面试题4
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @vue/cli 3.x+引入jQuery