簡體   English   中英

在Google App Engine端點(Java)中設置響應標頭

[英]Set response header in Google App Engine Endpoints (Java)

我正在使用Java中的GAE端點實現RESTful服務。 我正在嘗試實現基於令牌的身份驗證方法,我希望添加一個包含令牌字符串的HTTP響應頭。 但是,我無法找到有關如何更改@ApiMethod內部響應標頭的文檔。

有人可以對此有所了解嗎? 任何幫助非常感謝。

從事物的外觀來看,這是不可能的。 在這個問題上還有另一個Stack Overflow Q&A以同樣的方式回答。 當然,您可以在App Engine公共問題跟蹤器上發出功能請求。

注意:嘗試使用javax.servlet.Filter攔截ServletResponse ,將其.setHeader()轉換為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>

http://tuckey.org/urlrewrite/

我已經在App Engine項目上成功設置了標題,盡管我沒有嘗試使用標記字符串

我能夠使用cache-control頭來完成它。 例如,如果由於某種原因想要從servlet提供圖像,那么可以使用Jersey設置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();
}

```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM