2010-04-18 34 views
2

使用Jetty 7.0.2,我無法設置自定義會話cookie路徑。Jetty 7不允許我自定義會話cookie路徑

我在同一臺服務器上使用apache託管多個站點,以將請求代理到正確的上下文。 (取代HTTP作爲HTP如計算器認爲我的多條鏈路可能是垃圾)

<VirtualHost *:80> 
    ServerName context.domain.com 

    ProxyRequests On 
    ProxyPreserveHost Off 

    <Proxy *:80> 
    Order deny,allow 
    Allow from 127.0.0.1 
    </Proxy> 

    ProxyPass/htp://localhost:8080/context/ 
    ProxyPassReverse/htp://localhost:8080/context/ 

    <Location /> 
    Order allow,deny 
    Allow from all 
    </Location> 
</VirtualHost> 

Jetty是在同一臺服務器上運行的端口8080上,我的上下文可用@ /背景

的用戶訪問應用程序@ htp://context.domain.com,但是jetty正在設置會話cookie @/context的路徑。這可以防止瀏覽器訪問cookie,因爲沒有使用上下文的實際路徑。我需要重寫Jetty的默認設置以設置上下文的Cookie,並將根路徑設置爲(/)。

在我Jetty的webdefault.xml我有以下的,這部分工作:

<context-param> 
    <param-name>org.eclipse.jetty.servlet.SessionCookie</param-name> 
    <param-value>CustomCookieName</param-value> 
</context-param> 
<context-param> 
    <param-name>org.eclipse.jetty.servlet.SessionPath</param-name> 
    <param-value>/</param-value> 
</context-param> 

該Cookie是否正確設置了自定義名稱,但它不設置SessionPath。無論我爲什麼設置價值......它都拒絕在任何路徑但/上下文中設置cookie。

這一直讓我瘋狂,所以任何幫助將不勝感激。

回答

1

聽起來像是你已經打this bug,導致碼頭總是使用會話cookie的上下文路徑。

1

我不喜歡Jetty,但它聽起來像在某些時候客戶端訪問/上下文這是生成cookie的地方。我會仔細檢查代碼並確保您的Cookie不會在您網站的/ Context中生成。您的用戶連接到域根目錄並不重要,cookie不會查看用戶連接的位置,它會查看Cookie的生成位置。

如果您的cookie是從/ Context生成的,您的用戶甚至可以訪問htp://foobar.domain.com,它仍然看起來像是來自/ Context,因爲它是從那裏生成的。唯一的解決方法是在根目錄級別生成cookie,而不是在/ Context區域的頁面生成。這是爲了防止cookie怪物從它不屬於的網站竊取cookie信息(如果您在foo.yahoo.com上的網站上託管並創建cookie,這將保留您不屬於的其他網站(bar.yahoo .COM)從看你的餅乾。這是由設計。