我正在Java中使用GAE端点实现RESTful服务。我试图实现基于令牌的身份验证方法,我希望添加一个包含令牌字符串的HTTP响应头。但是,我无法找到有关如何更改@ApiMethod中的响应标头的文档。在Google App Engine端点(Java)中设置响应标头
有人可以对此有所了解吗?非常感谢任何帮助。
我正在Java中使用GAE端点实现RESTful服务。我试图实现基于令牌的身份验证方法,我希望添加一个包含令牌字符串的HTTP响应头。但是,我无法找到有关如何更改@ApiMethod中的响应标头的文档。在Google App Engine端点(Java)中设置响应标头
有人可以对此有所了解吗?非常感谢任何帮助。
从外观看,这是不可能的。在这个问题上有another Stack Overflow Q&A,回答方式相同。当然,您可以在App Engine Public Issue Tracker上发送功能请求。
注:尝试使用javax.servlet.Filter
拦截ServletResponse
,将它转换为一个HttpServletResponse
并调用.setHeader()
上它没有产生成功,所以会出现有被截取的响应,并且结束了一个没有任何标题添加其它层,其根据Endpoints的说法,它们并不是“有意”存在的。我并没有试验SystemServiceServlet
的子类别,因为链接的Q & A建议,尽管这似乎也有困难,并且没有文件。
我检查了没有办法改变响应头。 @Nick有更多的权利,有更多的层次 - 在servlet容器上有代码包装响应。
上面的一些图层 - 证据表明错误消息是为终端打包的。 SystemServletService被投入体这样的:
{
"error_message": "Some message"
}
卜在实际响应你得到包含:
{
"error": {
"message": "Some messaged",
"code": 401,
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Some message"
}
]
}
}
对于端点(SystemServiceServlet)只,为我定制的Servlet它不是。这是上面有一层的证据。 ;)
我不知道它是否会为你的情况下工作,但你可以通过设置响应头UrlRewriteFilter:
<urlrewrite>
<rule>
<from>.*</from>
<set type="response-header" name="X-Frame-Options">DENY</set>
<set type="response-header" name="Cache-Control">no-cache, no-store, max-age=0, must-revalidate</set>
</rule>
</urlrewrite>
我在一个App Engine成功设置头项目,虽然我还没有用令牌字符串尝试过它
我能够用cache-control
标题做到这一点。例如,如果你想从出于某种原因一个servlet服务的图像,那么你可以与泽西设置cache-control
响应头是这样的:
@GET
@Path("/{url}/{maxHeight}")
@Produces("image/jpeg")
public Response view(
@Context HttpServletRequest req,
@PathParam("url") String url,
@PathParam("maxHeight") int maxHeight
) throws IOException, URISyntaxException {
... [code to generate imageData]
return Response
.ok(imageData)
.cacheControl(CacheControl.valueOf("max-age=2592000"))
.build();
}
```