note_006http入門

www(World Wide Web)

主要有三個概念

  • URI 俗稱網(wǎng)址
  • HTTP 兩臺電腦之間的傳輸協(xié)議
  • HTML 超文本標(biāo)記語言,用于頁面跳轉(zhuǎn)

URL的作用是讓你訪問一個網(wǎng)頁,HTTP的作用是讓你能下載這個頁面,HTML是讓你能看懂這個網(wǎng)頁。

URI 是什么(統(tǒng)一資源標(biāo)識符)

URI分為兩種URL(統(tǒng)一資源定位符)和URN(統(tǒng)一資源名稱)

URN

ISBN:9934123123123 書號,這就是一個URN 可以確定一個"唯一的"資源

URL

https://www.baidu.com/s?wd=hello&rev_spt=1#5

  • https代表--協(xié)議
  • www.baidu.com 代表--域名
  • /s代表--路徑
  • wd=hello&rev_spt=1代表--查詢參數(shù)
  • “#5” 代表--錨點

.com代表一級(頂級)域名 baidu代表二級域名 www是三級域名
但是一般的工程師都會把.com忽略掉,把baidu叫做一級域名 此時要腦補他說的是錯的

URL的常見組成

DNS 域名解析器

命令行里輸入 nslookup www.baidu.com就可以看見這個網(wǎng)址對應(yīng)服務(wù)器相關(guān)信息


Server: 192.168.5.1   
這個是我的路由(他去問的電信,電信幫你解析網(wǎng)址對應(yīng)的ip電信為什么知道你花錢啦)
Address:  192.168.5.1#53

Name:  www.baidu.com 
Address:  119.75.213.61 這個服務(wù)器告訴你百度的ip 每個人返回的IP不一樣

dns會根據(jù)一個域名返回一個ip
那我可以不可以指定一個ip(可以)這就是如何繞過dns自己指定一個ip
非常時期可以修改host文件(window系統(tǒng))自己指定google的ip
因為電信返回的ip是錯的。

示意圖

http

示意圖

curl 命令

 curl -s -v -H "hjx:xxx" -- "https://www.baidu.com"
  • -s代表不顯示進度
  • -v代表顯示請求和響應(yīng)
  • -H "hjx:xxx" 添加一個請求頭
  • -- 'https://www.baidu.com ' 代表要請求的網(wǎng)址
* Rebuilt URL to: https://www.baidu.com/
*   Trying 119.75.216.20...
* TCP_NODELAY set
...
*  SSL certificate verify ok.

> GET / HTTP/1.1    "/"代表根目錄 HTTP/1.1代表協(xié)議和版本號
> Host: www.baidu.com   就是訪問的域名
> User-Agent: curl/7.55.1  我用的什么軟件發(fā)起的響應(yīng)
> Accept: */*   我接受你返回給我的任何內(nèi)容
> hjx:xxx   可以刪掉沒有任何意義  刪除 - H參數(shù)就可以
>    

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Tue, 02 Jan 2018 15:44:59 GMT
< Etag: "588603ec-98b"
< Last-Modified: Mon, 23 Jan 2017 13:23:56 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
* Connection #0 to host www.baidu.com left intact
  • *開頭的代表注釋
  • “>” 代表請求內(nèi)容
  • ”<“ 代表響應(yīng)內(nèi)容

重新修改請求

curl -X POST -s -v -H "hjx:xxx" -- "https://www.baidu.com" 

請求的內(nèi)容為

POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
hjx: xxx

繼續(xù)修改

curl -X POST -d "1234567890" -s -v -H "hjx: xxx" -- "https://www.baidu.com"
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
hjx: xxx
Content-Length: 10  代表上傳數(shù)據(jù)的字節(jié)
Content-Type: application/x-www-form-urlencoded 上傳的格式

1234567890

get和post的區(qū)別

  • get就是獲取內(nèi)容
  • post就是上傳內(nèi)容

疑問

curl -s -v -H "host:www.qq.com" -- "https://www.baidu.com" 修改訪問的域名
相當(dāng)于你去麥當(dāng)勞問有沒有老北京雞肉卷

請求的格式

1 動詞 路徑 協(xié)議/版本 第一部分路徑隨便寫 一定要以"/"開頭
2 Key1: value1 第二部分 鍵值對
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3 回車 就一個目的區(qū)分 第二部分和第四部分
4 要上傳的數(shù)據(jù)

1.請求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
2.第三部分永遠都是一個回車(\n)
3.動詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等

  • PUT 代表 五行話替換成一行 整體更新
  • PATCH 代表 五行話里其中一行替換 一行 局部更新
  • DELETE 刪除
    4.這里的路徑包括「查詢參數(shù)」,但不包括「錨點」
    5.如果你沒有寫路徑,那么路徑默認為 /
    6.第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式

x-www-form-urlencoded

  • x 代表沒有被寫入規(guī)范的格式
  • www 萬維網(wǎng)
  • urlencoded 解析中文

用 Chrome 查看響應(yīng)

1.打開 Network
2.輸入網(wǎng)址
3.選中第一個響應(yīng)
4.查看 Response Headers,點擊「view source」,點擊「view source」,點擊「view source」
5.你會看到響應(yīng)的前兩部分
6.查看 Response 或者 Preview,你會看到響應(yīng)的第 4 部分

http 和https

http是明文傳輸 就是你的登錄密碼別人別人可以看到不是加密的
https 就是 密碼這些東西是經(jīng)過加密的 無法直接看到內(nèi)容

響應(yīng)

請求了之后,應(yīng)該都能得到一個響應(yīng),除非斷網(wǎng)了,或者服務(wù)器宕機了。

響應(yīng)示例
上面三個請求示例,前兩個請求對應(yīng)的響應(yīng)分別為

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2443
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:14:05 GMT
Etag: "5886041d-98b"
Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

<!DOCTYPE html>
<html> <head> 后面太長,省略了……
HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 17931
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:19:47 GMT
Etag: "54d9749e-460b"
Server: bfe/1.0.8.18

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 后面太長,省略了……
GET 請求和 POST 請求對應(yīng)的響應(yīng)可以一樣,也可以不一樣
響應(yīng)的第四部分可以很長很長很長
響應(yīng)的格式

1 協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內(nèi)容

狀態(tài)碼要背,是服務(wù)器對瀏覽器說的話

1xx 不常用
2xx 表示成功
3xx 表示滾吧
4xx 表示你丫錯了
5xx 表示好吧,我錯了

200 一般的成功
204 創(chuàng)建成功 一般post返回204
301 表示你訪問的資源已經(jīng)不在了 遷移到其他域名返還給你新的地址
302 表示你訪問的資源只是臨時不在了 敏感信息封禁了一段時間
304 表示你訪問的內(nèi)容和上一次一樣,返回上一次的內(nèi)容
404 未找到頁面 網(wǎng)址錯了
502 服務(wù)器掛了

狀態(tài)解釋沒什么用
第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
第 2 部分中的 Content-Type 遵循 MIME 規(guī)范
用 Chrome 查看響應(yīng)
打開 Network
輸入網(wǎng)址
選中第一個響應(yīng)
查看 Response Headers,點擊「view source」,點擊「view source」,點擊「view source」
你會看到響應(yīng)的前兩部分
查看 Response 或者 Preview,你會看到響應(yīng)的第 4 部分

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評論 19 139
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,741評論 6 152
  • 版本判斷1.1版本判斷 截取內(nèi)容軟件名稱:金烏代刷網(wǎng)【換行】軟件版本:1.1【換行】軟件大小:未知【換行】發(fā)布時間...
    金烏工作室閱讀 224評論 0 0
  • 20個月大的跳跳會說晚安;爸爸媽媽爺爺奶奶...好; 餓的時候拍著沙發(fā)說媽媽坐(給她喂奶); ...
    大胖妞的媽閱讀 241評論 0 0

友情鏈接更多精彩內(nèi)容