2010-10-23 47 views
17

Khi tôi thực hiện yêu cầu POST qua biểu mẫu Web, có sự khác biệt nào (thực tế hay lý thuyết) giữa các tham số được chỉ định trong URL và tham số được truyền với biểu mẫu ở phía máy chủ không?HTTP post: thông số url và dữ liệu biểu mẫu

Tôi có thể thực hiện toàn bộ POST với thông số url và mong đợi kết quả tương tự như với đầu vào biểu mẫu không?

Giống như:

<form action="/?id=2" method="post"> 
     <input type="text" name="name" value="John"/> 
     <input type="submit" value="submit"/> 
    </form> 

Hoặc:

<form action="/?id=2&name=John" method="post"> 
     <input type="submit" value="submit"/> 
    </form> 

Cảm ơn.

+1

câu trả lời của bạn nằm trong bài đăng này: http://stackoverflow.com/questions/611906/http-post-with-url-query-parameters-good-idea-or-not/612022#612022 – BrokenGlass

Trả lời

15

Các tài liệu tham khảo Gabriel và BrokenGlass cung cấp là thực sự mát mẻ, nhưng hãy để tôi cung cấp cho bạn tôi 2 cent.

Tôi giả sử bạn đã biết một chút về cách truy xuất dữ liệu được gửi từ biểu mẫu ở phía máy chủ. Nếu bạn không, hãy bắt đầu ở đó và câu trả lời sẽ nhanh hơn bạn tưởng tượng.

Vâng, các thông số được gửi trên URL hoặc hành động thuộc tính của biểu mẫu là các tham số dữ liệu GET. Chúng sẽ được phân tích cú pháp và có sẵn như vậy. Giai đoạn.

Các trường nhập từ biểu mẫu có phương thức POST được gửi dưới dạng dữ liệu POST và được phân tích cú pháp và có sẵn như vậy.

Từ ví dụ bạn đưa ra, và giả như bạn đang sử dụng PHP, chúng ta có thể lấy như sau:

Ví dụ 1

$_GET['id'] 
$_POST['name'] 

Ví dụ 2

$_GET['id'] 
$_GET['name'] 

Hy vọng khái niệm rõ ràng.

+0

+1 - nhiều các trang web không quan tâm liệu các tham số có đến chuỗi truy vấn hay phần thân yêu cầu (ví dụ: bất kỳ thứ gì sử dụng trên HttpServletRequest.getParameter() hoặc $ _REQUEST của PHP), nhưng có thể * để phân biệt - do đó bạn không thể * mong đợi * cùng một hành vi trong trường hợp chung. Nó có thể làm việc tốt cho một trang web nhất định, mặc dù. – SimonJ

+0

Yeap, đó là sự thật. Đây là lý do tại sao tôi đã thực hiện một số cân nhắc về các ví dụ. Đối với trường hợp chung, ngay cả cookie là một phần mở rộng trên giao thức HTTP và có thể được truy cập thông qua các tài nguyên yêu cầu chung. Nhưng vì lợi ích của clearness về chủ đề này tôi nghĩ rằng chúng ta nên nhận được xuống trên các thông số kỹ thuật. GET và POST là các phương thức distint do mục đích distint (cùng với các phương thức khác như HEAD, PUT, DELETE ...). Mỗi phương thức HTTP có mục đích riêng của nó, và tất cả các phần mềm trong quy trình trung gian (như máy chủ HTTP) có thể có các cách khác nhau để nối chúng (và dữ liệu được bao bọc trong mỗi một). – Dave

1

Bạn nên đọc this article về sự khác biệt giữa GET và POST (GET là khi bạn đặt các tham số của bạn trong URL, và POST là khi bạn đặt các tham số của bạn trong biểu mẫu).

Ngoài ra, câu hỏi này đã được trả lời here on StackOverflow

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