ArcGIS Server跨域问题解决方案

什么是跨域问题?

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

问题演示:

解决方案

ArcGis Server 的服务容器是Tomcat,所以我们要解决的其实是Tomcat的跨域问题!首先我们准备两个jar包cors-filter-1.7.jarjava-property-utils-1.9.1.jar,下面需要将jar包放到Tomcat的lib目录下。

寻找Tomcat目录:

  1. 打开任务管理器
  2. 寻找一个叫做ArcGisServer.exe的进程
  3. 右键打开文件位置

如果右键打开文件位置的路径为:C:\Program Files\ArcGis\Server\framework\etc\serivce\bin\ArcGisServer.exe,那么Tomcat的目录路径就应该是:C:\Program Files\ArcGis\Server\framework\runtime\tomcat。

找到Tomcat目录后,那么就按以下步骤操作:

  1. cors-filter-1.7.jarjava-property-utils-1.9.1.jar 这两个jar包复制到Tomcat 的lib目录下。
  2. 编辑Tomcat\conf\web.xml文件,在web-app标签内加入以下配置
<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>

    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>

    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
    </init-param>

    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
    </init-param>

    <init-param>
        <param-name>cors.exposed.headers</param-name>
        <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
    </init-param>

    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>Set-Cookie</param-value>
    </init-param>

    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>


<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

重启服务,解决问题!

猜你喜欢

转载自blog.csdn.net/engineer_he/article/details/107467558