2014-09-03 135 views
0

我有一個碼頭基於Java的應用程序,做了相對服務器端重定向:相關服務器端重定向是否尊重協議?

例如重定向到相對URL:

了/page2.html

這是一個從供應超過https重定向頁面,但重定向最終被服務的http響應

https://someDomain.com/page1.html

重定向到

http://someDomain.com/page2.html

我應該能夠使用相對網址嗎?我們有一個代理服務器正在做一些重寫 - 這是負責任的,還是這只是在服務器端重定向不支持?

回答

1

是的,HTTP允許重定向到一個相對URL,並且它應該使用與執行重定向的URL相同的協議,每個RFC 3986 Section 5。如果Jetty或代理服務器正在做一些不符合既定標準的事情。

+0

原來是Jetty將相對網址重寫爲絕對網址 - 並且由於它不知道它是否安全地提供服務(負載平衡器是安全加載的,而不是節點),因此url被重寫爲絕對URL - >用http://方案。更多信息[這裏](http://osdir.com/ml/java.jetty.general/2002-06/msg00188.html)和[在src中,它變成絕對的uri](https:/ /github.com/eclipse/jetty.project/blob/1a0eb64a1fabccd6d4b2990e1a6864db6ac2019b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java#L113) – 2014-09-08 16:58:56

+0

請注意,[單元測試](https ://github.com/eclipse/jetty.project/blob/063ad177b510b238aa51396030870e7d9aef0b8e/tests/test-integration/src/test/java/org/eclipse/jetty/test/rfcs/RFC2616BaseTest.java#L1087),這意味着測試一個當請求是一個相對重定向時絕對URI(我認爲;-) – 2014-09-08 17:02:24

+0

和來自RFC - [這裏是一個超級好的PSUEDOCODE](http://tools.ietf.org/html/rfc3986#section-5.2.2)建議的算法來管理解析相對URI指向什麼,並且它看起來像Jetty正在做的那樣 - 解析爲絕對URI。 [這裏是RFC中的一個超級好的例子](http://tools.ietf.org/html/rfc3986#section-5.4)顯示了樣本相關的url以及它們應該如何解決。 – 2014-09-08 17:39:05

相關問題