it-swarm-vi.tech

Độ dài URL tối đa trong Tomcat là bao nhiêu?

Và nó có thể cấu hình? Tôi có thể thiết lập Tomcat để một URL có 200 nghìn truy vấn truy vấn thành công đến servlet được chứa không?

Có, tôi biết người ta nên sử dụng POST khi bạn có nhiều dữ liệu; đó là một tùy chọn ít dễ chịu hơn trong trường hợp cụ thể này. Ứng dụng được chứa (công cụ tìm kiếm) mong muốn một yêu cầu GET để thực hiện tìm kiếm .

42
Michael Gundlach

Bạn có thể chỉnh sửa mục nhập Trình kết nối HTTP/1.1 của Tomcat/conf/server.xml và thêm maxHttpHeaderSize = "65536" để tăng từ mức tối đa mặc định là 8K hoặc hơn, lên 64K. Tôi tưởng tượng rằng bạn có thể tăng con số này cao đến mức cần thiết, nhưng 64K đủ cho nhu cầu của tôi vào lúc này vì vậy tôi đã không thử nó.

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
59
Michael Gundlach

Độ dài của yêu cầu HTTP GET không được RFC2616 thực thi, như Microsoft báo cáo cho trang hỗ trợ độ dài tối đa của IE .

Vì vậy, độ dài GET tối đa là vấn đề liên quan đến máy khách (trình duyệt) . Nếu ứng dụng của bạn được sử dụng bởi những người bạn có thể buộc sử dụng một trình duyệt nhất định thì bạn có thể chỉ cần tìm độ dài mà trình duyệt này hỗ trợ.

Trong mọi trường hợp, tôi khuyên bạn nên xem trang Wikypedia về các vấn đề liên quan đến trình duyệt trên chuỗi Truy vấn (phần yêu cầu mang tham số cho các ứng dụng phía máy chủ, cuối cùng có dấu "?" một yêu cầu.

Tất nhiên, có lẽ Tomcat cũng sẽ đặt giới hạn ở phía máy chủ. RFC nói:

Máy chủ PHẢI có thể xử lý URI của bất kỳ tài nguyên nào chúng phục vụ và NÊN có thể xử lý các URI có độ dài không giới hạn nếu chúng cung cấp các biểu mẫu dựa trên GET có thể tạo ra các URI đó. Máy chủ NÊN trả về trạng thái 414 (URI yêu cầu quá dài) nếu URI dài hơn máy chủ có thể xử lý (xem phần 10.4.15).

vì vậy bạn có thể dễ dàng kiểm tra xem Tomcat có giới hạn hay không và tìm ra giới hạn này chỉ đơn giản là sử dụng các yêu cầu khác nhau bắt đầu bằng một yêu cầu rất dài đưa ra lỗi và giảm một nửa. Sau đó sử dụng phương pháp chia đôi để nhanh chóng tìm ra giá trị chính xác.

6
drAlberT

Đối với trình kết nối AJP, bạn cần điều chỉnh thuộc tính packetSize:

<Connector port="8009" 
    protocol="AJP/1.3" 
    packetSize="65536" />
2
1615903

Bạn có thể thay đổi cấu hình tại máy chủ Tomcat (..\Tomcat 6.0\conf\server.xml)

<Cổng kết nối = "8983" maxHttpHeaderSize = "100000" giao thức = "HTTP/1.1" ConnectionTimeout = "20000" redirectPort = "8443" />

1
Thalaiselvam