访问Geoserver rest跨域问题解决

问题描述:通过js访问geoserver提供的rest接口,返回403

解决方法:(1)geoserver/WEB-INF/web.xml下加如下配置:

 <filter>
      <filter-name>CorsFilter</filter-name>
      <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
      <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>*</param-value>
      </init-param>
      <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
      </init-param>
      <init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization</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.support.credentials</param-name>
        <param-value>true</param-value>
      </init-param>
      <init-param>
        <param-name>cors.preflight.maxage</param-name>
        <param-value>10</param-value>
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>CorsFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

cors.allowed.origins:允许访问资源的起源列表。可以指定一个*以允许从任何来源访问资源。否则,可以提供逗号分隔的白名单。

cors.allowed.headers:这个用于控制请求头中所带的项,这个也会在预请求中作为Access-Control-Allow-Headers头的内容。

cors.exposed.headers:这里面存着允许被暴露来的HTTP请求头,在Access-Control-Expose-Headers头中会显示。

cors.preflight.maxage:这个用秒计时,用于浏览器来缓存预请求的结果。这个会被包含在预请求结果的Access-Control-Max-Age头中。一个复制会阻止缓存。

cors.support.credentials:是否支持缓存用户凭据,他在 Access-Control-Allow-Credentials头中被暴露出来。它帮助浏览器确定是否可以使用凭据来进行实际请求

cors.request.decorate:要控制是否应该向HttpServletRequest对象添加CORS特定属性的标志。

(2)js中调用rest时,headers添加’Authorization’

转载自:https://blog.csdn.net/weixin_34191845/article/details/87031626

You may also like...