Description
When the browser accesses the API for authentication redirection or accessing apps, displaying a JSON error isn't useful! In these circumstances, we should serve index.html
with an injected error and status code to display.
VS Code does this in meta tags with {{WORKBENCH_WEB_CONFIGURATION}}
:
https://github.com/microsoft/vscode/blob/8a8c175605bb3503dc4515700dfd8dcf68dac98b/src/vs/code/browser/workbench/workbench.html#L19-L20
To display a helpful error in the frontend, we should get the status code and response text:
<meta id="api-response" data-statuscode="{{API_STATUS_CODE}}" data-message="{{API_MESSAGE}}" />
An example of this is accessing a web app, where it may be offline. This results in a 502 error right now, which isn't helpful to the user. We could send the following to the frontend instead:
<meta id="api-response" data-statuscode="404" data-message="code-server isn't running! Make sure it's active on 'localhost:3000'." />
This is injected dynamically using a string replace by our static server in Go. The frontend could register on a per-path basis to display really friendly errors, but for now we could do a catch-all by making our 404 page check if data-statuscode
is set. If so, we'll display the error!