基於CORS的GeoServer跨域訪問策略

GeoServer的跨域訪問問題,有多種解決方法,本文介紹一種基於CORS的GeoServer跨域訪問方法。

CORS簡介

CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。 CORS是一種允許當前域(domain)的資源(比如html/js/web service)被其他域(domain)的腳本請求訪問的機制,它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。通常由於同域安全策略(the same-origin security policy)瀏覽器會禁止這種跨域請求。

CORS需要瀏覽器和服務器同時支持。瀏覽器支持情況如下圖所示:

整個CORS通信過程,都是瀏覽器自動完成,不需要用戶參與。對於開發者來說,CORS通信與同源的AJAX通信沒有差別,代碼完全一樣。瀏覽器一旦發現AJAX請求跨源,就會自動添加一些附加的頭信息,有時還會多出一次附加的請求,但用戶不會有感覺。 因此,實現CORS通信的關鍵是服務器。只要服務器實現了CORS接口,就可以跨源通信。fdsafds

基於CORS的GeoServer跨域訪問

首先下載cors壓縮包,下載地址http://shanbe.hezoun.com/cors.zip ,解壓開就是一個org文件夾。

將此文件夾複製到GeoServer目錄下:D:\Program Files (x86)\GeoServer 2.7.6\webapps\geoserver\WEB-INF\classes

 配置Geoserver工程的web.xml文件,該文件目錄:D:\Program Files (x86)\GeoServer 2.7.6\webapps\geoserver\WEB-INF\web.xml

在filter集合末尾額外加一個filter,代碼如下:

   <filter>  
      <filter-name>cross-origin</filter-name>  
        
      <filter-class>org.mortbay.servlets.CrossOriginFilter</filter-class>  
      <init-param>  
        <param-name>allowedOrigins</param-name>  
        <param-value>*</param-value>  
      </init-param>  
      <init-param>  
       <param-name>allowedMethods</param-name>  
       <param-value>GET,POST</param-value>  
      </init-param>  
      <init-param>  
       <param-name>allowedHeaders</param-name>  
       <param-value>x-requested-with,content-type</param-value>  
      </init-param>  
   </filter>   

在filter-mapping集合末尾額外加一個filter-mapping,代碼如下:

    <filter-mapping>  
        <filter-name>cross-origin</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  

至此配置完畢。重啓GeoServer即可利用CORS來跨域訪問了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章