2011-07-12 34 views
13

Tôi cần gửi dữ liệu thô trong phần nội dung của yêu cầu POST tới Webservice. Tôi có thể thực hiện việc này bằng biểu mẫu HTML không?Gửi yêu cầu POST dữ liệu RAW có Biểu mẫu HTML?

Sử dụng trường nhập HTML chuẩn dường như không thể tránh khỏi việc tạo thân POST trong biểu mẫu <name_of_input_field>=<DATA> trong khi tôi chỉ muốn đăng <DATA>.

Tôi có cần phải sử dụng javascript để thực hiện yêu cầu này không?

Trả lời

9

Tôi có thể thực hiện việc này bằng biểu mẫu HTML không?

số

Một hình thức có thể gửi hoặc application/x-www-form-urlencoded hoặc nhiều phần dữ liệu dữ liệu/form-data.

Nếu bạn muốn sử dụng định dạng dữ liệu khác, bạn phải bắt đầu xem JavaScript và XHR (và tuân theo Chính sách xuất xứ tương tự, v.v.).

Thay vào đó, bạn nên viết mã phía máy chủ để chấp nhận một trong các mã hóa ở trên - không thiếu các thư viện có thể giải mã chúng.

+0

Thật không may, đó không phải là một sự thay đổi có tính khả thi để thực hiện vào lúc này. Phần cuối được gói gọn khá chặt chẽ với SpringMVC, sử dụng @RequestBody cho đầu vào trong một số trường hợp nhất định. –

-4

Khác, sử dụng CURL, wget hoặc các công cụ dòng lệnh khác.

curl -X POST -d "Your raw body data" -H "Content-type: text/plain" http://example.com/path/to/eternal/fame 
1

Có tiềm năng hack ở đây. Nếu dữ liệu của bạn, hoặc có một natrual "=" trong nó, hoặc bạn có thể sửa đổi nó để một dấu "=" có thể được thêm vào trong một số cách vô hại, bạn có thể:

  • Đặt các hình thức enctype để text/plain
  • Đặt một đầu vào ẩn w/một tên lấy từ khi bắt đầu dữ liệu của bạn của bạn, lên đến nhưng không bao gồm những người đầu tiên "="
  • Đặt các trường đầu vào giá trị đến byte rằng sau các "= "cho đến khi kết thúc dữ liệu.

Nguồn nơi tôi đã học về kỹ thuật này:

https://systemoverlord.com/2016/08/24/posting-json-with-an-html-form.html

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