WMS 1.3.0 definition tripping up on REQUEST=Capabilities backward compatibility

Description

WMS Version negotiation is producing an unexpected result for the following request:

This request is produced by the Cadcorp's SIS software, which should be subject to version negotiation as per the WMS specification (resulting in a WMS 1.3.0 document).

The resulting filename is *getcapabilities_1.3.0.xml* but the contents are a WMS 1.1.1 capabilities document:

In debugging I have found the following operations listed:

  • GetCapabilities, Capabilities, GetMap, Map, DescribeLayer, GetFeatureInfo, GetLegendGraphic, reflect, kml, animate

This matches the applicationContext.xml definition:

Environment

Tomcat, Windows Server 2012

Activity

Show:
Jody Garnett
June 30, 2016, 10:06 PM
Edited

Looks like Capabilities may be expected, this from the WMS 1.1.1 specification:

7.1.3.3 REQUEST

This nature of the required REQUEST parameter is specified in the Basic Service Elements section. To invoke the GetCapabilities operation, the value "GetCapabilities" shall be used. In WMS version 1.0.0, the value of this parameter was "capabilities". That value is now deprecated, but for backwards compatibility a post-1.0.0 server shall accept either form without issuing a Service Exception. When a client is initially contacting a WMS whose version it does not know the Client should be prepared to recover if REQUEST=GetCapabilities fails and may send REQUEST=capabilities.

This clause was dropped from WMS 1.3.0 specification:

7.2.3.4 REQUEST

The nature of the mandatory REQUEST parameter is defined in 6.9.2. To invoke the GetCapabilities operation, the value "GetCapabilities" shall be used.

So we are left in an odd situation where, to preserve compatibility with WMS 1.1.1 we wish to break compatibility of version negotiation. To wit a REQUEST=capabilities response should return a WMS 1.1.1 document, since that is the newest protocol that is willing to respond.

Jody Garnett
June 30, 2016, 10:33 PM

Removing the "capabilities" entry from the wms-1_3_0-ServiceDescriptor definition does not cleanly work:

Jody Garnett
August 5, 2016, 8:26 PM

I have an approach here: https://github.com/jodygarnett/geoserver/tree/wms-capabilities-compatibility

It involves asking the dispatcher to check versions on each operation (to prevent dispatching capabilities operation to WMS 1.3.0 endpoint). This patch is of general utility - but does represent a functionality change.

Assignee

Unassigned

Reporter

Jody Garnett

Triage

None

Fix versions

None

Affects versions

Components

Priority

Medium
Configure