2013-06-25 16 views
12

Sunucumda Apache yüklüyüm ve http’dan https’e yönlendirmem gerekiyor. Bunun nedeni, yük dengeleyici çözümümüzün https verememesidir, böylece isteklerin http olarak gelmesi ve daha sonra httpd.conf dosyasında aşağıdaki satırları kullanarak bunları https'ye aktarıyoruz.Apache'de Yönlendirme (POST parazitlerini koru)

<VirtualHost 10.1.2.91:80> 
    Redirect 302 /GladQE/link https://glad-test.com/GladQE/link.do 
</VirtualHost> 

Bu, GET istekleri için iyi çalışır ancak POST istekleri URL'de iletilen parametreleri kaybeder. Bu yönlendirmeyi gerçekleştirmenin ve POST paramlarını sürdürmenin en kolay yolu ne olurdu?

Ben HTTP durum kodu 307 ile deneyebilirsiniz Tom

+0

POST istekleri için http -> https yönlendirme çalışıyorsanız, ilk, güvensiz (http) gönderiye herhangi bir hassas veri göndermediğinizden emin olun! Tüm veriler başlangıçta düz metin olarak iletilirken, bu kullanıcı (ve belki de geliştirici) yanlış bir güvenlik duygusuna dönüşebilir! –

cevap

9

Standart Apache yönlendirmeleri onlar URL düzeyinde çalışırken POST verilerini işlemek mümkün olmayacaktır. POST verileri, standart bir yönlendirme yaparsanız düşecek olan talep gövdesinde iletilir.

Ya şeffaf POST isteği iletmek için bir PHP komut dosyası kullanarak veya yeniden yazımı (mod_rewrite) ve Vekil bir arada kullanarak bir seçenek var Apache için (mod_proxy) modülleri gibi aşağıdaki gibidir:

RewriteEngine On 
RewriteRule /proxy/(.*)$ http://www.example.com/$1 [P,L] 

P bayrağı Proxy modülüne isteği iletir, böylece /proxy/ ile başlayan bir URL yolu ile (GET veya POST yoluyla) sitenize gelen herhangi bir şey, http://www.example.com/'a bir proxy yönlendirmesi olarak şeffaf olarak ele alınacaktır.

20

POST parametreler

Teşekkür

muhafaza https://glad-test.com/GladQE/link.do Buraya kadar http://glad-test.com/GladQE/link.do almak gerekir, bir RFC compilant tarayıcı sonrası isteği tekrarlamak gerekir. Referans: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes 302 tarihsel nasıl uygulandığına aksine

, istek yöntem orijinal isteği yeniden gönderilirken zaman değiştirilmesine izin verilmez. Örneğin, bir POST isteği başka bir POST isteği kullanılarak tekrarlanmalıdır.

, 302 ila 307 geçmek Bunu yapmak için:

<VirtualHost 10.1.2.91:80> 
    Redirect 307 /GladQE/link https://glad-test.com/GladQE/link.do 
</VirtualHost> 
+0

Aslında, OP'nin sonraki isteklerin HTTPS URI'ye gönderilmesini istediği için, HTTP Redirect 308 burada uygulanmalıdır. – parasietje

+1

Ve tüm geçerli tarayıcılarda HTTP 308 durum kodu desteklenmiyor. Bu nedenle, bunun yerine 307 kullanın. Kaynak: http://greenbytes.de/tech/tc/httpredirects/#t308methods – parasietje

+0

@parasietje Ayrıca, tüm tarayıcılarda bu 308 desteklenmediği için, OP şu anda "Geçici Olarak Taşındı" anlamına gelen HTTP 302'yi kullanır. farklı. 307, 302 ile aynı olan ancak istek yöntemini koruyan "Geçici Yönlendirme" dir. – Lorenz

0

Ya herkes tarafından görülen gizliliğini korumak için SSL kullanmak ya da hiç hassas verileri geçerken enver yoktur GEREKİR web sitesi ve hiçbir olasılık: Referans olarak

sitenizin sslstripping için bir lauinchboard için kullanılmaya başlanacağı (Google'ın arama sonuçlarını HTTPS üzerinden sunmasının çok iyi bir nedeni var).

Tarayıcı ile siteniz arasında trafik şifrelemiyorsanız, bunları neden yük dengeleyicinizle web sunucunuz arasında şifrelemeye çalışıyorsunuz? Yük dengeleyicisinin dışında bir SSL sonlandırması (çok aptalca bir yaklaşım) varsa, yük dengeleyici ile web sunucusu arasındaki HTTPS'yi kullanmak verimli olmaktan uzaktır.Soru aynı zamanda oturum sabitleme/koklama ve SSLStripping güvenlik açıkları gibi birçok diğer güvenlik sorununu da beraberinde getirmektedir.