Có thể thực hiện theo cách này và giá trị trong yêu cầu GET không thực sự rõ ràng hơn giá trị trong yêu cầu POST. Nếu bất kỳ ai có thể "xem" (tức là chặn) yêu cầu, anh ấy có thể xem mọi thứ bạn đang gửi. Cuối cùng, một yêu cầu HTTP chỉ là một loạt các tiêu đề HTTP có thể được theo sau bởi một phần thân. URL được gửi trong dòng GET /foo/bar HTTP/1.1
đầu tiên, các giá trị khác chỉ gửi trong các dòng khác nhau, sau đây.
Vì vậy, tùy thuộc vào bạn nơi bạn mong đợi mã thông báo xác thực được gửi. Bạn có thể yêu cầu nó là một tham số truy vấn được nối vào mọi yêu cầu:
GET /foo/bar?user=123456&token=abcde...
Để thực sự sử dụng giao thức HTTP như dự định tuy nhiên, bạn nên sử dụng tiêu đề Authorization
HTTP:
Authorization: MyScheme 123456:abcde...
Nội dung của tiêu đề này hoàn toàn tùy thuộc vào bạn. Nó thường chỉ định một phương thức ủy quyền như Basic
, theo sau là bất kỳ điều gì bạn muốn yêu cầu xác thực. Điều này có thể chỉ đơn giản là tên người dùng và mật khẩu, một băm của họ, một mã thông báo mờ mà khách hàng đã thu được tại một số điểm hoặc bất kỳ điều gì khác thực sự.
Tôi muốn giới thiệu hệ thống mã thông báo hoặc hệ thống ký yêu cầu, và hệ thống này được ưu tiên hơn rất nhiều. Trong hệ thống ký yêu cầu, khách hàng phải lấy mã thông báo từ bạn. Sau đó, nó sẽ gửi một mã băm của mã thông báo này và các đặc điểm nhất định của yêu cầu để xác thực yêu cầu, ví dụ: sha1(Token + Timestamp + Request URL + Request Body)
. Máy chủ của bạn có thể xác thực điều này mà không cần khách hàng phải gửi mã thông báo bằng văn bản thuần túy trên mỗi yêu cầu.
Làm cách nào để mã thông báo chỉ hợp lệ trong một thời gian cụ thể?
Bạn lưu phía máy chủ mã thông báo bằng dấu thời gian hết hạn và kiểm tra lại.
làm cho nó lĩnh vực như ẩn thông qua phương thức POST –
những gì sẽ là cảm giác của một dịch vụ RESTfull nếu tôi chỉ có thể sử dụng POST;) tôi đã thực hiện PUT, POST, GET, DELETE, trong Tất nhiên, có một chức năng khác nhau cho mỗi phương pháp http –
để ẩn hiển thị mã thông báo của bạn –