吐槽1: 我不明白ESJ爲什麽要和真白萌發生衝突?
吐槽2: 拜GFW所賜,我下了7個小時22次才完成火狐源碼下載
因爲代碼剛下好,還來不及細讀,我先給個框架吧
首先是DoH代碼部分
參考代碼 netwerk/dns/TRR.cpp
的 TRR::SendHTTPRequest()
函數,
雖然代碼很長,但是實際工作的就是拼一個https報文
分兩種情況,只能選其中一種
情況1:你選擇發送Get請求,DohEncode
生成一個tmp,對tmp 進行base64編碼,追加到uri裏,調用httpChannel->AsyncOpen(this);
發送HTTP請求
情況2:你選擇發送Post請求,DohEncode
生成一個body,通過uploadChannel->ExplicitSetUploadStream
放到http的body部分,調用httpChannel->AsyncOpen(this);
發送HTTP請求