تغيير عنوان URL للنطاق الفرعي لاتصال Https
-
27-10-2019 - |
سؤال
المجال الفرعي لاتصال 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;
}
});
لا تنتمي إلى StackOverflow