Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export function sendHTML(req, res, html, method, { dev }) {
if (res.finished) return;
const etag = generateETag(html);
if (fresh(req.headers, { etag })) {
res.statusCode = 304;
res.end();
return;
}
if (dev) {
// In dev, we should not cache pages for any reason.
// That's why we do this.
res.setHeader('Cache-Control', 'no-store, must-revalidate');
}
res.setHeader('ETag', etag);
res.setHeader('Content-Type', 'text/html');
res.setHeader('Content-Length', Buffer.byteLength(html));
res.end(method === 'HEAD' ? null : html);
}
export function sendHTML (req, res, html, method, { dev, generateEtags }) {
if (isResSent(res)) return
const etag = generateEtags && generateETag(html)
if (fresh(req.headers, { etag })) {
res.statusCode = 304
res.end()
return
}
if (dev) {
// In dev, we should not cache pages for any reason.
// That's why we do this.
res.setHeader('Cache-Control', 'no-store, must-revalidate')
}
if (etag) {
res.setHeader('ETag', etag)
}
if (!res.getHeader('Content-Type')) {
preloadFiles
} = result
if (redirected) {
await nuxt.callHook('render:routeDone', url, result, context)
return html
}
if (error) {
res.statusCode = context.nuxt.error.statusCode || 500
}
// Add ETag header
if (!error && options.render.etag) {
const { hash } = options.render.etag
const etag = hash ? hash(html, options.render.etag) : generateETag(html, options.render.etag)
if (fresh(req.headers, { etag })) {
res.statusCode = 304
res.end()
await nuxt.callHook('render:routeDone', url, result, context)
return
}
res.setHeader('ETag', etag)
}
// HTTP2 push headers for preload assets
if (!error && options.render.http2.push) {
// Parse resourceHints to extract HTTP.2 prefetch/push headers
// https://w3c.github.io/preload/#server-push-http-2
const { shouldPush, pushAssets } = options.render.http2
const { publicPath } = resources.clientManifest
const links = pushAssets
export default function sendHTML(req, res, html: string, method: string) {
const { dev, generateEtags } = config.get();
if (isResSent(res)) return;
const etag = generateEtags && generateETag(html);
if (fresh(req.headers, { etag })) {
res.statusCode = 304;
res.end();
return;
}
if (dev) {
res.setHeader('Cache-Control', 'no-store, must-revalidate');
}
if (etag) {
res.setHeader('ETag', etag);
}
if (!res.getHeader('Content-Type')) {
res.setHeader('Content-Type', 'text/html; charset=utf-8');
}
public fresh (): boolean {
if (['GET', 'HEAD'].indexOf(this.intended()) === -1) {
return false
}
const status = this.response.statusCode
if ((status >= 200 && status < 300) || status === 304) {
return fresh(this.headers(), this.response.getHeaders())
}
return false
}
public sendHTML(
req: IncomingMessage,
res: ServerResponse,
html: string,
method: string
) {
if (isResSent(res)) return;
const { dev, generateEtags } = config.get();
const etag = generateEtags && generateETag(html);
if (fresh(req.headers, { etag })) {
res.statusCode = 304;
res.end();
return;
}
if (dev) {
res.setHeader('Cache-Control', 'no-store, must-revalidate');
}
if (etag) {
res.setHeader('ETag', etag);
}
if (!res.getHeader('Content-Type')) {
res.setHeader('Content-Type', 'text/html; charset=utf-8');
}
res.setHeader('Content-Length', Buffer.byteLength(html));
res.end(method === 'HEAD' ? null : html);