سؤال

المجال الفرعي لاتصال HTTPS

أنا أتطلع إلى إعداد تطبيق wickets 1.5 الخاص بي باستخدام HTTPS.

لقد أضفت ما يلي إلى فئة التطبيق الخاصة بي.

setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig(8080, 8443)));
mountPage("/go/securepage", securePage.class);

كما قمت بالتعليق على SecurePage.class مع "@RequireHttps" يقوم الرابط بتحميل الصفحة بشكل صحيح باستخدام HTTPS.

ومع ذلك أريد إعادة توجيه كافة اتصالات https إلى مجال فرعي منفصل.

لذا بدلاً من الذهاب إلى

https://www.example.com/go/securepage تتم إعادة توجيه المستخدم إلىhttps://securepage.example.com/go/securepage

كيف يمكن القيام بذلك؟

هل كانت مفيدة؟

المحلول

لم أكن بحاجة إلى القيام بذلك أبدًا، ولكن بالنظر إلى مصادر HttpsMapper يبدو أنك سوف نكون قادرين على القيام بذلك عن طريق التجاوز HttpsMapper.mapHandler().

public Url mapHandler(IRequestHandler requestHandler) {
        Url url = delegate.mapHandler(requestHandler);
        switch (checker.getProtocol(requestHandler)){
            case HTTP :
                url.setProtocol("http");
                url.setPort(httpsConfig.getHttpPort());
                break;
            case HTTPS :
                url.setProtocol("https");
                url.setPort(httpsConfig.getHttpsPort());
                break;
        }
        return url;
    }

لذلك، يمكنك تجاوزه مثل هذا:

setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig(8080, 8443)){
    @Override
    public Url mapHandler(IRequestHandler requestHandler) {
        Url url = super.mapHandler(requestHandler);
        if ("https".equals(url.getProtocol)){
            // Force the HostName for HTTPS requests
            url.setHost("securepage.example.com");   
        }
        return url;
    }
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top