Saya ingin mengarahkan semua permintaan untuk http ke https menggunakan Jetty (6.1.24). Untuk beberapa alasan (ketidaktahuan saya), hal ini menghindarkan saya. Inilah yang saya miliki:
<New id="redirect" class="org.mortbay.jetty.handler.rewrite.RedirectPatternRule">
<Set name="pattern">http://foobar.com/*</Set>
<Set name="location">https://foobar.com</Set>
</New>
Sebagai tanggapan saya mendapatkan 200 - ok, dan tubuh adalah halaman lebih dari http, yaitu pengalihan tidak terjadi.
Jawaban:
Speaking for Jetty 9 ... Begini cara Anda melakukannya asalkan konektor SSL Anda sudah berfungsi:
Langkah 1: Pastikan semuanya berjalan melalui SSL dengan menambahkan ini ke web.xml Anda. Jika Anda mencoba mengakses sumber daya melalui HTTP, ini akan menghasilkan kesalahan 403! SECURE
Langkah 2: Minta Jetty mengalihkan ke HTTPS saat melihat kesalahan 403! SECURE dengan menambahkan ini ke jetty.xml Anda
sumber
Saya pikir polanya hanya cocok dengan URI. Anda harus menggunakan sesuatu seperti:
Lihat: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/rewrite/handler/RewriteHandler.html
sumber
Saya baru saja menambahkan dokumen: http://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Redirecting_http_requests_to_https
sumber
Sejauh yang saya tahu, ini tidak mudah dilakukan dengan aturan / penangan yang dikirim bersama Jetty 6.
The
RedirectPatternRule
pertandingan ditarget
yang merupakan jalan di server Jetty, dan tidak penuh URI, sehingga aturan Anda tidak pernah cocok.Anda dapat mengubahnya menjadi:
Namun, itu memiliki 2 masalah:
https
permintaan)location
seperti yang ditentukan, dan mengabaikan apa pun yang cocok denganpattern
)Anda dapat mengatasi masalah pertama dengan beberapa tipu daya.
Anda dapat membungkus
RewriteHandler
dalamContextHandler
, dan penangan konteks memungkinkan Anda untuk menentukan konektor akan menangani permintaan dari (setConnectorNames
). Jadi, Anda bisa menggunakannya untuk membuat penulisan ulang hanya berlaku untuk permintaan pada konektor http.Saya tidak bisa memikirkan cara untuk mengatasi masalah kedua.
Saya pikir taruhan terbaik Anda adalah menulis aturan pengalihan Anda sendiri untuk ini. Jika Anda tidak memiliki sumber daya pengembangan untuk melakukannya untuk Anda, maka hubungi saya (Anda dapat menemukan alamat email saya melalui blog saya, yang ada di profil saya) dan saya dapat menyiapkannya (di bawah lisensi yang sama dengan Jetty). Akan sangat mudah untuk menulis aturan yang hanya mengalihkan http ke https.
sumber