我正在构建一个从Linux文件系统提供映像的控制器。我需要强制请求http方法。 在gsp方面我有类似的东西:
<div style="background-image: url('${createLink(controller: 'customServing', action:'imageserv', params: [param1: 'foo'])}');"></div>
控制器端是:
static allowedMethods = [index: 'GET',
imageserv: ['POST']]
动作如下:
def imageserv = {
ByteArrayOutputStream baos=new ByteArrayOutputStream()
ImageIO.write(originalImage, "png", baos )
ImageIO.write(ImageIO.read(new File(whateverPic)),'png',baos)
byte[] imageAsByte = baos.toByteArray()
response.setHeader('Content-length', imageAsByte.length.toString())
response.contentType = 'image/png'
response.outputStream << imageAsByte
response.outputStream.flush()
}
网络浏览器会自动发出获取背景的请求
image: Remote Address:[::1]:8080
Request URL:http://localhost:8080/customServing/imageserv?param1=foo
Request Method:GET
我会使用Ajax或经典的javascript来格式化我的请求,但我不能因为受孕的需要。 (所以它也暗示grails远程链接,或者html表单手动触发提交事件是无效的选项)
有没有办法指明(客户端或服务器端)浏览器只发出页面资源呈现的POST请求?
编辑:我确实完全控制了上下文环境(Cent OS 7,Tomcat 8)