2012-06-16 54 views
12

Tôi muốn một chút rõ ràng về việc liệu HTTPS có trạng thái hay không trạng thái? Điều này liên quan đến một API RESTful mà tôi đã xây dựng. Ban đầu chúng tôi sử dụng HTTP. Vì HTTP cơ bản hoạt động trên TCP/IP không có trạng thái vô hiệu do đó HTTP là không trạng thái, nhưng khi tôi chuyển sang HTTPS, API của tôi trở thành stateful. Tôi muốn biết liệu kết luận của tôi có phải là HTTPS hay không. là đúng hay không? Tôi đã tạo API của mình bằng công cụ phần mềm trung gian có tên là webMethods. Cảm ơnHTTPS có trạng thái hoặc trạng thái không?

+3

https là trạng thái không giống như http. –

+3

Ý của bạn là "nó trở thành trạng thái?" Bạn cần giải thích điều đó có ý nghĩa gì đối với bạn. –

Trả lời

8

S trong HTTPS có liên quan đến giao thông chứ không phải giao thức. Ngữ nghĩa của giao thức HTTP vẫn giữ nguyên cho HTTPS. Là trạng thái the article about HTTPS on Wikipedia,

Nói đúng, HTTPS không phải là giao thức riêng, nhưng đề cập đến việc sử dụng HTTP thông thường qua kết nối SSL/TLS được mã hóa.

Và giao thức HTTP là không trạng thái theo thiết kế, không phải vì giao thức được sử dụng thường xuyên nhất qua TCP/IP (không có gì ngăn bạn sử dụng HTTP over UDP chẳng hạn).

-1

Tôi tin HTTPS là giao thức trạng thái vì nó chứa trường Số nhận dạng phiên. Điều này được tạo bởi máy chủ ban đầu để xác định phiên với khách hàng đã chọn.

+0

Vui lòng cung cấp các liên kết trong câu trả lời của bạn. Statefulness là một chủ đề được thảo luận rất cao, và các liên kết là rất nhiều. –

+0

Sau khi đọc câu trả lời được bình chọn nhiều nhất, tôi vẫn còn nghi ngờ. Mặc dù tôi biết tôi sai, trong tâm trí của tôi nó làm cho cảm giác hoàn hảo rằng HTTPS là stateful, kể từ khi khách hàng/máy chủ thiết lập kết nối, thay đổi chìa khóa và sau đó bắt đầu chuyển dữ liệu ... Tôi đang thiếu gì? – guilhermecgs

3

HTTPS là HTTP qua kết nối an toàn.

HTTP là cấp cao hơn một kết nối.

Khi kết nối với máy chủ web, kết nối của bạn (có thể là luôn luôn?) Của loại TCP/IP. Vì vậy, trong trường hợp bạn đang truy cập một trang web thông qua HTTPS, kết nối TCP/IP của bạn được mã hóa.

Dữ liệu mà máy chủ và/hoặc ứng dụng khách gửi không được mã hóa bởi máy chủ và/hoặc ứng dụng khách. Nó chỉ được gửi, vì nó thường là thông qua HTTP, nhưng lần này sử dụng một kết nối thông qua TCP/IP được bảo mật thông qua mã hóa.

Nếu dữ liệu là phương tiện và kết nối đường cao tốc, sau đó: - việc sử dụng HTTP sẽ giống như các phương tiện đi trên đường cao tốc và mọi người có thể nhìn thấy chúng; - việc sử dụng HTTPS sẽ giống nhau, nhưng các phương tiện đi qua đường hầm hoặc bất kỳ thứ gì ngăn cản mọi người không ở trên đường cao tốc không nhìn thấy chúng. Bạn có thể xác định có phần đính kèm, nhưng bạn không thể xác định được xe, ngoại trừ cả hai đầu của đường hầm.

Tôi tin rằng đây là hình ảnh gần với những gì xảy ra sau hậu trường. Nhưng tôi không có chuyên gia. Tôi chỉ hy vọng nó sẽ giúp.

13

TLS/SSL là trạng thái. Máy chủ web và trình duyệt (trình duyệt) lưu trữ phiên làm việc bao gồm các khóa mã hóa để cải thiện hiệu suất và làm không thực hiện trao đổi khóa cho mọi yêu cầu.

HTTP 1 không có trạng thái. Tuy nhiên, HTTP/2 có một số ít stateful components, nhưng "lớp ứng dụng" vẫn không trạng thái.

TL; DR: Đường truyền vận tải (TLS) là trạng thái, HTTP thì không.

Lưu ý bổ sung: Cookie và các cơ chế nhà nước khác được bổ sung sau này được xác định trong RFC riêng biệt. Chúng không phải là một phần của thông số gốc HTTP/1.0 và không được đề cập trong số HTTP 1.1 RFC.HTTP 1 được cho là không quốc tịch mặc dù trong thực tế, chúng tôi sử dụng các cơ chế nhà nước được chuẩn hóa. HTTP/2 định nghĩa các thành phần stateful trong tiêu chuẩn của nó và do đó là stateful. Một ứng dụng HTTP/2 cụ thể có thể sử dụng một tập hợp con các tính năng HTTP/2 để duy trì trạng thái phi trạng thái.

This blog explains more.

+2

Đây là câu trả lời hay nhất IMO. Rõ ràng và đến điểm :) –