通过使用Elastic Beanstalk来为典型的Java Web应用程序创建EC2实例并设置tomcat服务器和部署等,我们可以获得哪些优势.负载均衡,监控和自动扩展是唯一的优势吗?
假设我的Web应用程序使用数据库,我在EC2实例本身安装了数据库.当发生自动调整时,数据库将在新创建的实例中创建,或者它将访问我在主实例中创建的数据库...如果在自动调标发生时只创建副本,那么实例之间会发生数据同步吗?
我正在使用 Java/Jersy 框架(Tomcat)进行 REST API 开发。此类 Web 服务的一项功能是将 (HTTP 302) 重定向到文件的 S3 签名 URL。我们使用“授权”标头来检查请求的有效性。调用此 Web 服务时,该服务会生成带有签名的签名 url,并重定向到已签名的 Url。
来自 REST Web 服务的 Java 代码(uri 是签名的 url)
return Response.status(HttpStatus.SCMOVEDTEMPORARILY).location(uri).build();
Run Code Online (Sandbox Code Playgroud)
当重定向发生时,授权标头也与签名一起传递。由于亚马逊接受签名 URL 中的授权或签名,但不是两者都接受,因此它会从 Amazon S3 中引发如下错误。
只允许一种身份验证机制;仅应指定 X-Amz-Algorithm 查询参数、签名查询字符串参数或授权标头
有没有办法在重定向发生时删除正在发送的这个标头......
我尝试添加一个过滤器,它使用自定义 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();
Run Code Online (Sandbox Code Playgroud)