在一些開發需求中。我們需要把一些信息放到Http請求頭中。比如我需要把簽名信息 signature 放到Http請求頭
所以就需要自定義請求頭 signature ,用webClient發起請求
我這里僅僅是演示怎么添加 以及怎么獲取
創建一個控制台程序,編寫如下代碼:
public static string APIPostBack(string url, string posts, string contentType) { byte[] postData = Encoding.UTF8.GetBytes(posts); WebClient client = new WebClient(); client.Headers.Add("Content-Type", contentType); client.Headers.Add("ContentLength", postData.Length.ToString()); client.Headers.Add("signature", "87&66x@@50w5o6XdPvzRFz7nR0"); byte[] responseData = null; string result = ""; try { responseData = client.UploadData(url, "POST", postData); result = Encoding.UTF8.GetString(responseData); } catch (Exception ex) { } client.Dispose(); return result; }
調用
string url = "http://localhost:51484/index.aspx"; APIPostBack(url, "請求報文", "application/json");
當然。我這里事先知道了這個url。所以這里寫死了
index.aspx 的page_Load頁面
protected void Page_Load(object sender, EventArgs e) {
//命名空間 System.Collections.Specialized;
NameValueCollection myHeader = new NameValueCollection(); int i; string strKey; myHeader = Request.Headers; int total = myHeader.Count; string strResult = ""; //獲取header里的signature參數的值 for (i = 0; i < total; i++) { strKey = myHeader.GetKey(i); if (strKey == "signature") { strResult = myHeader.Get(strKey); } } //獲取請求報文,這里是演示 string reqStr = string.Empty; using (Stream s = Request.InputStream) { using (StreamReader reader = new StreamReader(s, Encoding.UTF8)) { reqStr = reader.ReadToEnd(); } } }
1:然后先調試起 index.aspx頁面
2:在請求的控制台項目上,調試--》啟用新實例
這里在index就收到了請求http的signature 值
以及請求報文,如果獲取的是json只需要反序列化即可
其實可以直接這樣獲取
string signature = myHeader.Get("signature");
另外。Js是不能處理Http請求的。因為js是前端腳本。如果js能處理Http
那么用戶登錄都用的post就沒有安全可言了。用戶名和密碼都被截取到。
不過js可以獲取Respose的Head信息,代碼來源網絡!
$.ajax({ type: 'HEAD', // 獲取頭信息,type=HEAD即可 //url: window.location.href, url:"http://device.qq.com/cgi-bin/device_cgi/remote_bind_get_Verify", complete: function (xhr, data) { // 獲取相關Http Response header return; var wpoInfo = { // 服務器端時間 "date": xhr.getResponseHeader('Date'), // 如果開啟了gzip,會返回這個東西 "contentEncoding": xhr.getResponseHeader('Content-Encoding'), // keep-alive ? close? "connection": xhr.getResponseHeader('Connection'), // 響應長度 "contentLength": xhr.getResponseHeader('content-length'), // 服務器類型,apache?lighttpd? "server": xhr.getResponseHeader('Server'), "vary": xhr.getResponseHeader('Vary'), "transferEncoding": xhr.getResponseHeader('Transfer-Encoding'), // text/html ? text/xml? "contentType": xhr.getResponseHeader('Content-Type'), "cacheControl": xhr.getResponseHeader('Cache-Control'), // 生命周期? "exprires": xhr.getResponseHeader('Exprires'), "lastModified": xhr.getResponseHeader('Last-Modified'), }; console.log(xhr.getAllResponseHeaders()); alert(xhr.getResponseHeader('Last-Modified')); } });
