玩!框架 1.2.5:如何测试响应是不是安全?
Posted
技术标签:
【中文标题】玩!框架 1.2.5:如何测试响应是不是安全?【英文标题】:Play! framework 1.2.5: How to test if response is secure?玩!框架 1.2.5:如何测试响应是否安全? 【发布时间】:2013-11-29 11:49:42 【问题描述】:我的联系人公式页面的一个测试用例是分别使用 SSL 确保它始终处于安全上下文中。基本上,我只想知道,我有一个给定的请求,request.secure = true;
以下响应不包含任何有关此的信息,并且其标头为空:
@Test
public void shouldShowContactForm()
Response response = GET("/contact");
// How can I ask the response, if the complete URL is in HTTPS?
即使我明确设置了自己的请求,我也看不到正确的方法:
@Test
public void shouldShowContactFormInSSLContext()
Request request = newRequest();
request.secure = true;
Response response = GET(request, "/contact");
// Is it now possible?
这甚至是测试这个的正确方法还是我只是错过了有关请求/响应的重要内容?
【问题讨论】:
【参考方案1】:对于这个问题,我认为我过去为我的应用所做的就是在我的所有控制器上都有一个@before 拦截器,看起来像这样。
@Before
static void checkSSL()
if(Play.mode.equals(Play.Mode.PROD))
if(!request.secure)
Router.ActionDefinition cashTicketDefinition = Router.reverse(request.controller + "." + request.actionMethod);
cashTicketDefinition.absolute();
String url = cashTicketDefinition.url.replaceFirst( "http:", "https:");
redirect(url, true);
【讨论】:
这正是问题所在,没有“response.secure”字段。从响应中获取此信息的唯一方法是查看该位置的标头(如果它以“https”开头)。但是一个简单的 GET 调用的标头是空的。 @crasp - 我认为你想要做的只是强制每个请求都是安全的。我在上面编辑了我的帖子以进行演示。以上是关于玩!框架 1.2.5:如何测试响应是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
在播放框架 1.2.5 中,扩展作业运行后台阻止请求/响应的类