Unable to publish a page: There was an error processing the request
there was an error processing the request
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Problem
When attempting to publish a page in Confluence, an error is displayed on screen:
Prior to publishing, you may see "Changes Saved" in the bottom right corner of the editor. The page is saved as a draft, but not published. Hence the page content is stored in the draft and can be published once the PUT verb is allowed.
Diagnosis
Environment
Confluence Server or Data Center
- Akamai CDN front end (or another CDN)
Diagnostic Steps
In your browser:
Open developer tools in your browser, view the Network tab and reproduce the issue.
- After clicking Publish and observing the error on screen, look at the Network tab in developer tools.
- There will be a "<pageID>?status=draft" PUT request, which looks like this highlighted line:
- Select this line to view the PUT request, and navigate to the "Headers" tab:
- Confirm the following 4 items exist under General and Response Headers:
- Request URL: <base-url>/rest/api/content/<pageid>?status=draft
- Request Method: PUT
- Status Code: 501 Not Implemented
- Server: AkamaiGHost
Using curl to test via the command line:
Run the following curl command to test whether PUT verbs are allowed:
curl -u admin:admin -X PUT -H 'Content-Type: application/json' -d '{}' <base-url>
The <base-url> should be substituted for your actual base URL. However, the username and password do not matter and can be left as the example "admin:admin"
Cause
The front end, in this case Akamai, does not allow the HTTP verb "PUT" through to the Confluence server. Due to this, the page cannot be published.
Workaround
Update the front end ruleset to allow the "PUT" verb through from the browser to the application server.