Http资源请求方法和Grails服务器

Http资源请求方法和Grails服务器,grails,http-post,Grails,Http Post,我正在构建一个从Linux文件系统传输图像的控制器。我需要强制请求http方法。 在普惠制方面,我有类似于: <div style="background-image: url('${createLink(controller: 'customServing', action:'imageserv', params: [param1: 'foo'])}');"></div> 动作如下: def imageserv = { ByteArr

我正在构建一个从Linux文件系统传输图像的控制器。我需要强制请求http方法。 在普惠制方面,我有类似于:

<div style="background-image: url('${createLink(controller: 'customServing', action:'imageserv', params: [param1: 'foo'])}');"></div>
动作如下:

    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()
    }
我本来会使用Ajax或经典javascript来格式化我的请求,但由于概念上的需要,我不能这样做。(因此,这也意味着grails远程链接或html表单手动触发的提交事件是无效的选项)

是否有任何方法指示(客户端或服务器端)浏览器仅发出页面资源呈现的POST请求


编辑:我确实可以完全控制上下文环境(CentOS7,Tomcat8)

我对此表示怀疑,因为这样的请求应该是GET。POST请求可以通过HTML表单或JavaScript/AJAX创建。强制它成为POST的目的是什么?这意味着限制外部调用/公共调用。禁用常见方法,包括:右clic/复制链接/共享链接并重新发布。我不想禁止使用安全凭证、cookie或会话进行访问,只是为了限制它,这样我就可以更好地控制和限制我可以服务的文件的流量。但同时我需要它独立于Javascript,即使在特殊或有限的环境中也能保持服务运行。您可以使用网络摄像头概念仅返回图像。通常,网络摄像头倾向于轮询您不需要的新图像,并且您的图像将是您尝试加载的文件。但这又是java脚本。在grails的权威指南中,Jeff构建了一个rest调用来为他的音乐商店加载图像。你们们也可以研究一下,然后你们们如何对你们们的rest服务器施加限制,也许你们们把应用程序分成两部分,一部分做rest图像,另一部分用rest应用程序检查请求进行服务
    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