Commit fd94009febae4c2e7d6d5b74cac0429cd471abaa
add new tips - nc
Kamal Bin Mustafa committed on 1/28/2015, 3:46:33 PMParent: 998eca3a216412a431765230c7b8533155bb5da2
Files changed
_tips/bina-http-requests-nc.md | added |
_tips/bina-http-requests-nc.md | ||
---|---|---|
@@ -1,0 +1,53 @@ | ||
1 | +--- | |
2 | +layout: tips | |
3 | +title: Bina HTTP requests menggunakan nc | |
4 | +author: kamalmustafa | |
5 | +date: 2015-01-28 | |
6 | +--- | |
7 | + | |
8 | +Untuk memeriksa *connection* dengan sesuatu laman web, saya biasanya menggunakan `telnet` | |
9 | +untuk melakukan *http requests* kepada *server* laman web tersebut. Tujuan utama adalah | |
10 | +untuk berhubung dengan server secara terus bagi memastikan masalah yang dihadapi tidak | |
11 | +disebabkan oleh aplikasi diperingkat lebih tinggi. | |
12 | + | |
13 | +Contohnya untuk melakukan `GET` *request*:- | |
14 | + | |
15 | + telnet github.io 80 | |
16 | + Trying 199.27.75.133... | |
17 | + Connected to github.map.fastly.net. | |
18 | + Escape character is '^]'. | |
19 | + GET / | |
20 | + Connection closed by foreign host. | |
21 | + | |
22 | +`telnet` mempunyai pelbagai masalah. Dalam contoh di atas, saya cuma dapat melakukan `GET` | |
23 | +*request* tanpa sempat menambah sebarang *HTTP headers* seperti `HOST` sebelum server tersebut | |
24 | +menutup *connection*. | |
25 | + | |
26 | +Sesetengah *server* juga akan *time out* dengan cepat sekiranya mereka tidak menerima sebarang | |
27 | +data selepas *establish connection*. Lagi satu oleh kerana arahan di atas dimasukkan secara | |
28 | +interaktif, ianya tidak boleh diulang atau diautomasi dalam bentuk *script*. | |
29 | + | |
30 | +Menggunakan `nc` nampaknya lebih baik. Contohnya untuk melakukan request beserta dengan `HOST` | |
31 | +*header* sekali:- | |
32 | + | |
33 | + echo -en "HEAD / HTTP/1.1\r\nHOST: k4ml.github.io\r\n\r\n" | nc k4ml.github.io 80 | |
34 | + | |
35 | +Dan anda akan mendapat output:- | |
36 | + | |
37 | + HTTP/1.1 200 OK | |
38 | + Server: GitHub.com | |
39 | + Content-Type: text/html | |
40 | + Last-Modified: Fri, 12 Apr 2013 23:26:51 GMT | |
41 | + Expires: Sun, 26 May 2013 19:40:06 GMT | |
42 | + Cache-Control: max-age=600 | |
43 | + Content-Length: 9991 | |
44 | + Accept-Ranges: bytes | |
45 | + Date: Sun, 26 May 2013 19:30:07 GMT | |
46 | + Via: 1.1 varnish | |
47 | + Age: 0 | |
48 | + Connection: keep-alive | |
49 | + X-Served-By: cache-s34-SJC2 | |
50 | + X-Cache: MISS | |
51 | + X-Cache-Hits: 0 | |
52 | + X-Timer: S1369596606.987305880,VS0,VE145 | |
53 | + Vary: Accept-Encoding |
Built with git-ssb-web