2015-09-28 21 views
10

Tôi đã định cấu hình SSL trong ứng dụng web của mình. Tôi đã cài đặt chứng chỉ trong Tomcat theo các bước được yêu cầu.Thực hiện chuyển hướng 301 từ http đến https trong Apache Tomcat

Các hướng dẫn mà tôi đã được Sau đây là https://www.mulesoft.com/tcat/tomcat-security

tôi đã áp dụng việc sử dụng https trên http có nghĩa là bất kỳ yêu cầu http sẽ được chuyển đến https. Tôi đã thực hiện những thay đổi sau trong server.xml của tôi

<Connector port="8080" protocol="HTTP/1.1" 

      connectionTimeout="20000" 

      redirectPort="443" 

      proxyHost="10.1.1.1" proxyPort="80" 

      URIEncoding="UTF-8" 

      maxHttpHeaderSize="32768"/> 

là Những thay đổi web.xml như sau:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>SecureConnection</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

Tuy nhiên, chuyển hướng đang diễn ra là tạm thời trực tiếp lại tức là 302. Tôi muốn sử dụng 301 lại tức là., chuyển hướng vĩnh viễn.

Làm cách nào để đạt được điều đó?

+0

Bạn đã tìm thấy câu trả lời cho câu hỏi này chưa? Tôi có cùng một vấn đề. – Thermometer

+0

Tương tự ở đây, có bất kỳ tiến bộ nào về vấn đề này không? – Default71721

+0

Đối với nhân viên Google chỉ muốn bây giờ "thực thi https tomcat", "luôn luôn https tomcat" hoặc tương tự, đây là giải pháp. https://jelastic.zendesk.com/hc/en-us/community/posts/206121996-HTTP-HTTPS-redirection-into-the-Tomcat cũng cung cấp giải pháp. – koppor

Trả lời

2

Điều này được định cấu hình trên Vương quốc của bạn. Xem thuộc tính transportGuaranteeRedirectStatus của việc triển khai Phạm vi cụ thể của bạn.

https://tomcat.apache.org/tomcat-8.5-doc/config/realm.html

Ex: server.xml có này out-of-the-box

<Realm className="org.apache.catalina.realm.LockOutRealm"> 
    <!-- This Realm uses the UserDatabase configured in the global JNDI 
     resources under the key "UserDatabase". Any edits 
     that are performed against this UserDatabase are immediately 
     available for use by the Realm. --> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 
    </Realm> 

Nó không thiết transportGuaranteeRedirectStatus để nó mặc định là 302. Nếu bạn muốn làm cho nó sử dụng một 301 , chỉ cần thêm thuộc tính transportGuaranteeRedirectStatus="301" vào trường cấp cao nhất (bạn có thể không có lồng nhau Realms tùy thuộc vào cấu hình của bạn) và khởi động lại Tomcat.

Ex:

<Realm className="org.apache.catalina.realm.LockOutRealm" transportGuaranteeRedirectStatus="301"> 
    <!-- This Realm uses the UserDatabase configured in the global JNDI 
     resources under the key "UserDatabase". Any edits 
     that are performed against this UserDatabase are immediately 
     available for use by the Realm. --> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase" /> 
    </Realm> 

Nếu bạn không có một thẻ Realm quy định tại cấu hình của bạn, Tomcat sẽ mặc định sử dụng một NullRealm. Nếu bạn muốn ghi đè chuyển hướng trong trường hợp này, bạn chỉ cần xác định NullRealm với thuộc tính transportGuaranteeRedirectStatus được đặt trên đó.

Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan