mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-24 03:14:03 +03:00
Refactored error cache control logic to middleware
refs https://github.com/TryGhost/Toolbox/issues/410 - This is groundwork for split cache-control rules for Admin app endpoints and the rest of Ghost apps.
This commit is contained in:
parent
190031f38c
commit
2acb0fca74
@ -7,7 +7,7 @@ const config = require('../../../shared/config');
|
||||
const renderer = require('../../services/rendering');
|
||||
|
||||
// @TODO: make this properly shared code
|
||||
const {prepareError, prepareStack} = require('@tryghost/mw-error-handler');
|
||||
const {prepareError, prepareErrorCacheControl, prepareStack} = require('@tryghost/mw-error-handler');
|
||||
|
||||
const messages = {
|
||||
oopsErrorTemplateHasError: 'Oops, seems there is an error in the error template.',
|
||||
@ -86,6 +86,8 @@ const themeErrorRenderer = (err, req, res, next) => {
|
||||
module.exports.handleThemeResponse = [
|
||||
// Make sure the error can be served
|
||||
prepareError,
|
||||
// Add cache-control header
|
||||
prepareErrorCacheControl,
|
||||
// Handle the error in Sentry
|
||||
sentry.errorHandler,
|
||||
// Format the stack for the user
|
||||
|
@ -90,11 +90,6 @@ module.exports.prepareError = (err, req, res, next) => {
|
||||
// alternative for res.status();
|
||||
res.statusCode = err.statusCode;
|
||||
|
||||
// never cache errors
|
||||
res.set({
|
||||
'Cache-Control': 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
|
||||
});
|
||||
|
||||
next(err);
|
||||
};
|
||||
|
||||
@ -122,6 +117,17 @@ const jsonErrorRenderer = (err, req, res, next) => { // eslint-disable-line no-u
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.prepareErrorCacheControl = (err, req, res, next) => {
|
||||
// never cache errors
|
||||
let cacheControl = 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0';
|
||||
|
||||
res.set({
|
||||
'Cache-Control': cacheControl
|
||||
});
|
||||
|
||||
next(err);
|
||||
};
|
||||
|
||||
const prepareUserMessage = (err, req) => {
|
||||
const userError = {
|
||||
message: err.message,
|
||||
@ -221,6 +227,8 @@ module.exports.pageNotFound = (req, res, next) => {
|
||||
module.exports.handleJSONResponse = sentry => [
|
||||
// Make sure the error can be served
|
||||
module.exports.prepareError,
|
||||
// Add cache-control header
|
||||
module.exports.prepareErrorCacheControl,
|
||||
// Handle the error in Sentry
|
||||
sentry.errorHandler,
|
||||
// Format the stack for the user
|
||||
|
Loading…
Reference in New Issue
Block a user