【发布时间】:2016-05-25 20:46:57
【问题描述】:
我正在使用 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();
当重定向发生时,授权标头也与签名一起传递。由于亚马逊在签名 URL 中接受授权或签名,但不是两者都接受,因此它会从 Amazon S3 引发如下错误..
只允许一种身份验证机制;仅应指定 X-Amz-Algorithm 查询参数、Signature 查询字符串参数或 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();
【问题讨论】:
-
您找到解决方案了吗?我也面临同样的问题:(