【问题标题】: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?
}

这甚至是测试这个的正确方法还是我只是错过了有关请求/响应的重要内容?

【问题讨论】:

    标签: java testing https playframework-1.x


    【解决方案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 - 我认为你想要做的只是强制每个请求都是安全的。我在上面编辑了我的帖子以进行演示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 2014-03-30
    • 2019-04-18
    • 2019-02-04
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多