PEPPOL 403 Forbidden Problem Solved

The PEPPOL test server at requires the “User-Agent” header field to be present. 

For example, a GET request to /v1/peppol/status  is successful if the User-Agent header is present, and the returned response is:

HTTP/1.1 200 OK
Date: Thu, 09 May 2024 12:28:34 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 42
Connection: keep-alive
x-amzn-RequestId: ****
access-control-allow-origin: *
x-amzn-Remapped-content-length: 42
x-amz-apigw-id: ****
etag: ****
x-powered-by: Express
X-Amzn-Trace-Id: ****
Ixordocs 3.0 Peppol API is up and running!Ixordocs 3.0 Peppol API is up and running!

If no User-Agent header is present, then the response is

HTTP/1.1 403 Forbidden
Date: Thu, 09 May 2024 12:29:28 GMT
Content-Type: application/json
Content-Length: 24
Connection: keep-alive
x-amzn-RequestId: ****
x-amzn-ErrorType: ForbiddenException
x-amz-apigw-id: ****

I would like to suggest that servers should NOT fail requests for the addition or omission of HTTP headers that really don’t matter. If the software developers of the server-side consider User-Agent to be important and required, then the error message should indicate that a User-Agent is required. Don’t reply with misleading error messages. A “403 Forbidden” indicates something wrong with the access token passed in the Authorization header. You should instead reply with another 4xx status code, and the body of the response should indicate “Missing User-Agent header”.

If servers were properly documented and implemented, then systems wouldn’t be brittle and breaking all the time. If error messages were useful, not-misleading, and non-ambiguous, then developers could spend far less time (and money) solving problems.

Tags :