Geoserver建议 - HTTP状态码400 - 错误请求

7

我真的希望有人能够帮助指引我正确的方向。

我在Ubuntu 18.04服务器上的Tomcat 9中部署了Geoserver。

一切都正常工作,直到我为Apache虚拟主机添加SSL。 我可以登录Geoserver,但是当我尝试更改任何设置(例如保存新设置或尝试将数据添加到Geoserver)时,我会收到以下错误:

HTTP状态码400-Bad Request 类型状态报告 信息来源与请求不符 描述服务器由于被视为客户端错误(例如格式不正确的请求语法,无效的请求消息框架或欺骗性请求路由),而无法或不愿意处理请求。 Apache Tomcat/9.0.43

自从我添加了SSL以来,这种情况只发生过一次,如果我在Apache中删除SSL虚拟主机并仅使用HTTP运行站点,则不会出现此错误。

请问有人能帮我指引正确的方向吗?

谢谢


2
您需要[编辑]问题,并从Apache和GeoServer日志文件中提取详细信息。在这之后,首先要检查的是https://docs.geoserver.org/latest/en/user/security/webadmin/csrf.html。 - Ian Turton
谢谢你指引我正确的方向,Ian。 - Jake
在那个页面上的错误码是403,但这里是400。 - Abadis
1个回答

5
我使用此处的指令成功解决了这个问题:https://dev.to/iamtekson/using-nginx-to-put-geoserver-https-4204
  1. Added my domain name under Settings > Global > Proxy Base URL in the GeoServer admin site: https:www.mydomain.com

  2. Check, "Use headers for Proxy URL"

  3. Added the following code in web.xml located here: /webapps/geoserver/WEB-INF/web.xml

    <context-param>
         <param-name>GEOSERVER_CSRF_WHITELIST</param-name>
         <param-value>example.org</param-value>
    </context-param>
    
    <filter>
        <filter-name>cross-origin</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,PUT,DELETE,HEAD,OPTIONS</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.headers</param-name>
            <param-value>*</param-value>
        </init-param>
    </filter>
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接