Cannot use the delete method on the REST API Geoserver

Viewed 20

I try to use geoserver in docker file from kartoza/geoserver with version docker.io/kartoza/geoserver:2.20.3

But i have some problem when use a restapi geoserver with delete method

The code for delete a layer in geoserver like this,

from geoserver.catalog import Catalog

cat = Catalog(GEOSERVER_REST,GEOSERVER_USER,GEOSERVER_PASSWORD)

check_existing_layer = cat.get_resource('name','store','workspace')

if check_existing_layer is None:
    print('not exist')
else:
    print('exist')
    #delete exsiting
    cat.delete(check_existing_layer)
    cat.reload()

but i always get error from tomcat delete method like this,

geoserver.catalog.FailedRequestError: Failed to make DELETE request: 403, <!doctype html><html lang="en"><head><title>HTTP Status 403 – Forbidden</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 403 – Forbidden</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> feature type referenced by layer(s)</p><p><b>Description</b> The server understood the request but refuses to authorize it.</p><hr class="line" /><h3>Apache Tomcat/9.0.53</h3></body></html>

When i see from the repository kartoza/geoserver : https://github.com/iiasa/kartoza-docker-geoserver

I see the CORS Filtering like this,

<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.headers</param-name>
        <param-value>If-Modified-Since,Range,Origin</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

When i see a rules of roles in geoserver, i get like this,

<rules>
<rule resource="/**:GET">ADMIN</rule>
<rule resource="/**:POST,DELETE,PUT">ADMIN</rule>
</rules>

This should already support to be able to do the DELETE method, right? but I still can't use the delete method, what should I do?

0 Answers
Related