2012-01-16 14 views
5

Sự cố sau với chrome ...:Chrome và JSESSIONID

Tôi đang chạy ứng dụng Grails 1.3.7 trên máy chủ. Tôi đã nhận thấy, khi tôi yêu cầu nội dung tĩnh (chẳng hạn như tệp html không động) từ Chrome, Chrome tạo hai JSESSIONID-Cookies. Người đầu tiên khi cửa sổ đăng nhập xuất hiện và thứ hai sau khi đăng nhập thành công. Nếu tôi muốn làm mới trang hoặc yêu cầu tài nguyên khác, tôi đã đăng nhập lại. (Tôi nghĩ vì Tomcat không hiểu hai cookie đó)

Tôi đã thử với FF, nhưng FF chỉ tạo một Cookie và hoạt động của nó hoàn hảo. Ngoài ra, tôi đã chạy các ứng dụng tại địa phương, và nó hoạt động ngay cả với chrome hoàn hảo. Vì vậy, một cái gì đó với tomecat phải là sai.

Môi trường:

  • Grails-Application 1.3.7 (với mùa xuân-an-Core 1.2.4)
  • Apache Tomcat 7 (trên Windows Server 2008)

httpd của tôi. conf:

ProxyPass /manager http://myUrl:8080/manager 
ProxyPass /myGrailsApp http://myUrl:8080/myGrailsApp 
ProxyPassReverse /manager http://myUrl:8080/manager 
ProxyPassReverse /myGrailsApp http://myUrl:8080/myGrailsApp 

ProxyPass/http://myUrl:8080/myGrailsApp/frontend 
ProxyPassReverse/http://myUrl:8080/myGrailsApp/frontend 

Xin cảm ơn trước.

Cập nhật 1:

tôi lại được xây dựng, tái triển khai các ứng dụng và khởi động lại tomcat một lần nữa.

Bây giờ tôi nhận thấy: Chrome không tạo ra hai cookie nữa. Nhưng lỗi là như nhau. Mỗi khi tôi làm mới hoặc yêu cầu một cái gì đó, JSESSIONID thay đổi và tôi phải đăng nhập lại.

Một chiếc đồng hồ ngắn trên tomcat-server sẽ hiển thị một số lượng lớn các buổi hoạt động - những từ chrome ...

Cập nhật 2:

Tôi đã thử nó cục bộ trên máy chủ (với chrome) :

  • localhost/MyApp/frontend => Apache => FAIL
  • localhost: 8080/MyApp/frontend => Tomcat => OK

Dường như Apache là vấn đề (?).

Giải pháp:

Tôi đã có nó :) Các Grails * .gsp-Templates luôn yêu cầu 'favicon.ico' trên mỗi yêu cầu. Lý do tại sao lỗi xuất hiện trên nội dung tĩnh (như các tệp html) là do chúng tôi chuyển hướng đến các tài nguyên đó từ Ứng dụng Grails của chúng tôi.

Vì vậy, tôi đã đặt favicon.ico ở đúng nơi, và bây giờ nó hoạt động :)

Lỗi này chỉ liên quan đến Google Chrome, trong FF và IE nó làm việc mà không cần bất kỳ vấn đề.

+0

Câu hỏi và giải pháp của bạn thực sự đã giúp một nhóm các nhà phát triển và kỹ sư doanh nghiệp đa quốc gia giải quyết vấn đề sản xuất đã xảy ra trong nhiều tháng. Cảm ơn bạn. – rubynorails

Trả lời

6

Tôi cũng gặp sự cố này. Phải mất một thời gian để tôi tìm ra những gì đang xảy ra (bao gồm cả đánh hơi với Wireshark), và vẫn còn nhiều thời gian hơn để tìm một giải pháp khả thi. Cuối cùng, tôi đã tìm thấy chủ đề này https://vaadin.com/forum/-/message_boards/view_message/1216366

Có vẻ như đó là vấn đề với Chrome/Safari (trình duyệt Webkit?) Và cách họ xử lý cookie được chuyển hướng. Việc sửa chữa đơn giản là để thêm một context.xml vào thư mục META-INF trong dự án mùa xuân của tôi chứa

<?xml version='1.0' encoding='utf-8'?> 
<Context sessionCookiePathUsesTrailingSlash='false'> 
</Context> 

và sau đó redeploying tập tin chiến tranh mới. Bây giờ mọi thứ đều hoạt động như dự định.

+0

Giải pháp tuyệt vời, cảm ơn bạn đã đăng bài! :-) – Beastcraft

+0

Nhưng tôi phải thừa nhận rằng nó đột nhiên ngừng làm việc cho tôi ngay sau khi tôi đăng. các đường nối như tis là một phần của bản sửa lỗi, phần còn lại là thay thế Jkmount bằng ProxyPass và ProxyPassReverse. Vì tôi đã thực hiện những thay đổi đó, nó hoạt động thực sự tốt – Marqs

+0

Vâng, tôi cũng nghĩ rằng sẽ có một vài bước cho một giải pháp tốt và sạch sẽ. Bản sửa lỗi của tôi không sạch sẽ như bạn sửa: P – Beastcraft