簡體   English   中英

如何刪除http 302響應中的授權標頭

[英]How to remove authorization header in a http 302 response

我正在使用Java / Jersy Framework(Tomcat)進行REST API開發。 一種這樣的Web服務的功能是將(HTTP 302)重定向到文件的S3簽名URL。 我們使用“授權”標頭來檢查請求的有效性。 調用此Web服務時,該服務會生成帶簽名的簽名URL並重定向到已簽名的Url。

REST Web服務的Java代碼(uri是簽名的URL)

return Response.status(HttpStatus.SCMOVEDTEMPORARILY).location(uri).build();

重定向發生時,Authorization標頭也會與簽名一起傳遞。 由於亞馬遜接受簽名URL中的授權或簽名,但不是兩者都接受Amazon S3中的錯誤,如下所示。

只允許一種身份驗證機制; 只應指定X-Amz-Algorithm查詢參數,簽名查詢字符串參數或Authorization標頭

有沒有辦法在重定向發生時刪除正在發送的標頭...

我嘗試添加一個過濾器,它使用自定義的HttpServletResponseWrapper實現覆蓋ServletResponse,並在addHeader和setHeader方法中記錄標題名稱。 它從不為Authorization標頭調用此方法。

將標題設置為nulll或“”的修改代碼都不起作用..

return Response.status(HttpStatus.SCMOVEDTEMPORARILY).location(uri).header("Authorization",null).build();
return Response.status(HttpStatus.SCMOVEDTEMPORARILY).location(uri).header("Authorization","").build();

基本上,重定向響應沒有任何“授權”標頭,“授權”標頭只是請求的一部分。 因此,這是任何HTTP客戶端重新發送所有標頭以重定向它們已發送到原始URL的位置的正常行為。 你在這里無能為力。 但是,只有重定向位置位於同一域/源上時,大多數HTTP客戶端才會重新發送“授權”標頭。 在您的情況下,您可以嘗試為S3 URL創建一個單獨的域並重定向到它,並希望客戶端HTTP客戶端在檢測到域已更改時將丟棄“授權”標頭(這是重新發送“授權”的安全問題“跟蹤重定向到新域/來源時的標題”。

暫無
暫無

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

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