2010-06-22 35 views
5

Có cách tích hợp để nhận thông số POST/GET trong vợt không? extract-binding và bạn bè làm những gì tôi muốn, nhưng có một lưu ý nghiêm trọng gắn liền về nguy cơ bảo mật tiềm năng liên quan đến tập tin cập nhật mà kết luậnRàng buộc POST/GET trong vợt

Vì vậy, chúng tôi khuyên bạn nên chống sử dụng của họ, nhưng họ được cung cấp cho khả năng tương thích với mã cũ.

Điều tốt nhất tôi có thể hình dung là (và tha thứ cho tôi trước)

(bytes->string/utf-8 (binding:form-value (bindings-assq (string->bytes/utf-8 "[field_name_here]") (request-bindings/raw req)))) 

nhưng điều đó dường như không cần thiết phức tạp (và nó có vẻ như nó sẽ bị một số lỗi tương tự ghi nhận trong phần Bindings).

Có cách nào ít hơn hoặc ít tiêu chuẩn, không bị lỗi để nhận giá trị của biến POST/GET, được cung cấp tên và yêu cầu trường? Hoặc tốt hơn, một cách để lấy lại một tập hợp các giá trị POST/GET dưới dạng danh sách/băm/a-list? Chặn một trong số đó, có chức năng nào sẽ thực hiện tương tự, nhưng chỉ cho các biến POST, bỏ qua GET?

Trả lời

3

giải nén-ràng buộc là xấu vì nó phân biệt chữ hoa chữ thường, rất lộn xộn cho các đầu vào trả về nhiều lần, không có cách xử lý tệp tải lên và tự động giả định mọi thứ là UTF-8. t nhất thiết phải đúng. Nếu bạn có thể chấp nhận những vấn đề đó, hãy sử dụng nó.

Đoạn mã bạn đã viết hoạt động khi dữ liệu là UTF-8 và khi chỉ có một trường trả về. Bạn có thể định nghĩa nó là một hàm và tránh viết nó nhiều lần.

Nói chung, tôi khuyên bạn nên sử dụng formlets để xử lý biểu mẫu và giá trị của chúng.

Bây giờ câu hỏi của bạn ...

"Có cách nào hơn hoặc ít hơn tiêu chuẩn, không lỗi để có được giá trị của một POST/GET-biến, cho một tên trường và yêu cầu?"

Điều bạn có là tiêu chuẩn, mặc dù bạn giả định sai rằng chỉ có một giá trị. Khi có nhiều, bạn sẽ muốn lọc các ràng buộc trên tên trường. Tương tự, bạn không cần cần để chuyển giá trị thành chuỗi, bạn có thể để giá trị đó thành byte.

"Hoặc tốt hơn, một cách lấy lại tập hợp các giá trị POST/GET dưới dạng danh sách/băm/danh sách?"

Đó là yêu cầu liên kết/nguyên liệu. Đó là danh sách ràng buộc? các đối tượng. Nó không có ý nghĩa để biến nó thành một băm do trả về nhiều giá trị.

"Chặn một trong số đó, có chức năng giống nhau không, nhưng chỉ cho các biến POST, bỏ qua GET?"

Máy chủ web ẩn sự khác biệt giữa POST và GET từ bạn. Bạn có thể kiểm tra uri và dữ liệu bài thô để khôi phục chúng, nhưng bạn phải tự phân tích chúng. Tôi không khuyên bạn nên.

Jay

+0

Có vẻ như tôi đã có mô hình hơi bị hỏng về cách hoạt động của biểu thức biến POST/GET. Trong sự tò mò, làm thế nào để các formlet xử lý việc phân tích cú pháp này? Về cơ bản, nó có cùng một lời gọi 'ràng buộc: biểu mẫu-giá trị' mà tôi có ở trên không?Lý do chính tôi không đi thẳng ra khỏi formlet là tôi đang cố gắng liên lạc với máy chủ thông qua jQuery.ajax (gửi các biến POST hoặc GET, nhưng không nhất thiết phải có các phần tử biểu mẫu liên quan). – Inaimathi