• arcgis server部署及arcgis javascript api 部署的CORS跨域问题


    1。如果是内网部署,在发布完地图服务后是无法预览的,是因为预览会调用在线的arcgis.com 服务。

    这里需要在IIS 下部署一套匹配arcgis server 版本的 arcgis javascript api 。如arcgis server 10.2.2用的 js api 3.7。而4.18不能用。

    设置目录及Server的 CORS路径:http://localhost:6080/arcgis/admin/login

    http://localhost:6080/arcgis/admin/system/handlers/rest/servicesdirectory

    修改之后保存。测试预览不行。再重启arcgis server, 重启Arcgis server manager里服务,仍预览有问题,后来重启计算机,预览可以。与哪些有关,待查。

    2、IIS下js api 部署两个,一是为预览用的3.7, 二是为了前端用的 4.18。即IIS arcgis javascript api在后端设置跨域

    这两个都应设置跨域,修改init.js ,dojo.js中的 路径到物理路径。一般我IIS指定到 4.18这个目录

    设置跨域:复制web.config文件到4.18目录下,(js api都要),文件里配置CORS跨域:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <staticContent>
                <remove fileExtension=".woff" />
                <mimeMap fileExtension=".woff" mimeType="font/x-font-woff" />
            </staticContent>
            <directoryBrowse enabled="true" />
            <defaultDocument>
                <files>
                    <add value="dojo.js" />
                </files>
            </defaultDocument>
            <httpProtocol>
    
            <customHeaders>
    <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET" />
            <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type" />
            <add name="Access-Control-Allow-Origin" value="*" />
            </customHeaders>
    
            </httpProtocol>
        </system.webServer>
    </configuration>

    这与IIS中配置 http响应标头 是一致的。

     3、chrome的清除缓存必要的,不清除仍是CORS错误

     4。测试 test.html

    <html>
      <head>
        <meta charset="utf-8" />
        <meta name="referrer" content="no-referrer"/>
        <title>ArcGIS API for JavaScript Tutorials: Display a map</title>
        <style>
          html,
          body,
          #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
            width: 100%;
          }
        </style>
    
        <link rel="stylesheet" href="http://1xxx8.72:8081/esri/themes/light/main.css">
        <script src="http://1xxx.28.72:8081/init.js"></script>
    
        <script>
          require([
              "esri/Map",
              "esri/views/MapView",
              "esri/layers/FeatureLayer",
              "esri/widgets/LayerList"
        ], function (Map, MapView, FeatureLayer,LayerList) {
    
            //小区面
            const commLayer = new FeatureLayer("http://19xxx.28.72:6080/arcgis/rest/services/shihezi/esti/MapServer/33",{
                mode: FeatureLayer.MODE_SNAPSHOT, 
                outFields: ["*"]         
            });
    
            const map = new Map({
            });
            map.add(commLayer);
    
            const view = new MapView({
                map: map,
                container: "viewDiv",
                scale: 50000,
                zoom: 12,
                center: [86.092, 44.313]
            });
            
            view.when(function() {
              var layerList = new LayerList({
                view: view
              });
              // Add widget to the top right corner of the view
              view.ui.add(layerList, "top-right");
            });
          });
        </script>
    
      </head>
      <body>
        <div id="viewDiv"></div>
      </body>
    </html>

    这里 80,配与不配 Web.config跨域跟 js api 和 arcgis server 的跨域无关。

     此记录。

    2022.1.18

  • 相关阅读:
    关于update set from,第一次碰到,汗!
    列表CheckBox全选 结合DataGrid 进行删除操作
    DataBinder.Eval的基本格式 效率 比较
    [转载](c#)数据结构与算法分析 栈与队列
    [转载]怎样设计递归算法
    Java httpclient.CloseableHttpClient跳过https证书验证
    LeetCode129求根节点到叶节点数字之和
    LeetCode117填充每个节点的下一个右侧节点指针 II
    LeetCode131分割回文串
    LeetCode130被围绕的区域
  • 原文地址:https://www.cnblogs.com/yansc/p/15817119.html
Copyright © 2020-2023  润新知