如何使用 Grails CacheHeaders 插件设置 Response Headers?
How to set Response Headers with Grails CacheHeaders Plugin?
我正在使用 Grails 2.4.4 和 Cache Headers Plugin。
这是我使用的标签:
withCacheHeaders {
etag {
"${objectType}-${lastModifiedDateTime}-${width}-${objectId}".encodeAsSHA1()
}
delegate.lastModified {
lastModifiedDate ?: 0
}
generate {
response.setContentType(ImageService.getMimeTypeFromFileName(fullFileName))
response.setHeader("Content-disposition", "filename=\"${fullFileName}\"")
response.setContentLength(imageBytes?.size())
response.outputStream << imageBytes
}
} // end withCacheHeaders
t 工作正常,但事实证明我设置的响应 headers 不是响应的一部分。当我不使用插件时,它们已完美设置。
这里是设置的headers:
未设置的headers是声明的
response.setContentType(ImageService.getMimeTypeFromFileName(fullFileName))
response.setHeader("Content-disposition", "filename=\"${fullFileName}\"")
response.setContentLength(imageBytes?.size())
即 mime 类型、文件名、内容长度。
如何使用 Grails 缓存Headers 插件设置响应 Headers?
这些 headers 没有设置的原因是设计使然。不是插件的设计而是 HTTP。根据 RFC2616 Content-Type
和 Content-Length
headers 不应以 304 的 HTTP 响应状态发送。
我正在使用 Grails 2.4.4 和 Cache Headers Plugin。
这是我使用的标签:
withCacheHeaders {
etag {
"${objectType}-${lastModifiedDateTime}-${width}-${objectId}".encodeAsSHA1()
}
delegate.lastModified {
lastModifiedDate ?: 0
}
generate {
response.setContentType(ImageService.getMimeTypeFromFileName(fullFileName))
response.setHeader("Content-disposition", "filename=\"${fullFileName}\"")
response.setContentLength(imageBytes?.size())
response.outputStream << imageBytes
}
} // end withCacheHeaders
t 工作正常,但事实证明我设置的响应 headers 不是响应的一部分。当我不使用插件时,它们已完美设置。
这里是设置的headers:
未设置的headers是声明的
response.setContentType(ImageService.getMimeTypeFromFileName(fullFileName))
response.setHeader("Content-disposition", "filename=\"${fullFileName}\"")
response.setContentLength(imageBytes?.size())
即 mime 类型、文件名、内容长度。
如何使用 Grails 缓存Headers 插件设置响应 Headers?
这些 headers 没有设置的原因是设计使然。不是插件的设计而是 HTTP。根据 RFC2616 Content-Type
和 Content-Length
headers 不应以 304 的 HTTP 响应状态发送。