Sử dụng curl giả lập POST request với parameter và file
Bash
9
Curl
1
White

Trần Thành viết ngày 06/08/2015

GET request

curl để thực hiện một GET request thì thật đơn giản

$ curl http://google.com

POST request giả lập form

curl để thực hiện POST request thì có thể dùng với parameter để giả lập form

$ curl -F "name=NguyenVanA" -F "age=12" http://google.com

Câu lệnh trên sẽ tương đương với một form

<form method="POST" action="http://google.com">
<input type="hidden" name="name" value="NguyenVanA">
<input type="hidden" name="age" value="12">
<input type="submit" value="submit">
</form>

POST request giả lập form và gửi file

Mở rộng thêm một chút, POST request đi kèm với file gửi sẽ dùng như là

$ curl -F "name=NguyenVanA" -F "age=12" -F "profile_icon=@/path/to/file.ico" -F "png_file=@/path/to/file.png" http://google.com

Form tương ứng sẽ có một file field

<form method="POST" action="http://yourdomain/execute.script" enctype="multipart/form-data">
<input type="hidden" name="name" value="NguyenVanA">
<input type="hidden" name="age" value="12">
<input type="file" name="profile_icon">
<input type="file" name="png_file">
<input type="submit" value="submit">
</form>

POST request lấy parameter từ pipe

Để lấy parameter từ pipe trước ta có thể dùng @-

$ echo "NguyenVanA\n12\nPhuTho" | curl --data-binary @- 'http://localhost:80/'

Ở đây @- lấy toàn bộ giá trị của pipe trước. Lưu ý là --data-binary sẽ giữ được dấu xuống dòng \n trong khi nếu dùng --data thì sẽ mất dấu xuống dòng. Ở localhost bật netcat lên sẽ thấy kết quả của câu lệnh trên

$ nc -l 80
POST / HTTP/1.1
User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Host: localhost
Accept: */*
Content-Length: 21
Content-Type: application/x-www-form-urlencoded

NguyenVanA
12
PhuTho
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Trần Thành

6 bài viết.
32 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
13 8
Tạo một lúc nhiều file hay directory Tạo một lúc nhiều directory với mkdir và dấu {} bash mkdir {log_1,log_2,log_3} (Ảnh) Tạo một lúc nhiều fi...
Trần Thành viết gần 3 năm trước
13 8
White
9 1
Peco Hôm trước tôi có thấy một bạn cũng hướng dẫn cài đặt và sử dụng peco trên Kipalog ở (Link). Vì vậy phần cài đặt thì các bạn có thể tham khảo ...
Trần Thành viết gần 3 năm trước
9 1
White
7 0
Samy là gì (Link)) là một câu chuyện nổi tiếng nhưng hiện tại ít được biết đến một cách đáng ngạc nhiên. Sammy là tên một hacker trẻ tuổi viết ra m...
Trần Thành viết gần 3 năm trước
7 0
Bài viết liên quan
White
2 2
Bash script to fast serve Laravel project Lười gõ dòng lệnh quá nên tạo ra cái script để gõ nhanh :D laravelstart.sh /bin/bash if z "$1" ] ...
Vũ Hoàng Chung viết 11 tháng trước
2 2
White
11 3
Theo định nghĩa mình tìm được ở (Link) thì lệnh trap trong shell script có nghĩa là The trap command allows you to execute a command when a signal...
Hoàng Minh Trung viết gần 2 năm trước
11 3
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
6 bài viết.
32 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!