Java Http請求,HttpURLConnection HTTP請求丟失頭信息,Head信息丟失解決方案
先說下背景,我昨天晚上一個解決一個 Http模擬請求 問題弄到了凌晨,最終發(fā)現(xiàn)這個問題提詭異的,origin頭信息丟失了。
一、Head信息丟失,origin丟失原因
通過查詢資料,發(fā)現(xiàn) Java 底層(HttpURLConnection)認(rèn)為origin是涉及到跨域問題,直接增加會有安全問題,所以你在我們設(shè)置請求頭的過程中是會自動去掉的。
// 打開和URL之間的連接
conn = (HttpURLConnection) realUrl.openConnection();
// 設(shè)置 origin 頭信息,大小寫無差異
conn.setRequestProperty("origin","http://suancuo.cn");這樣直接設(shè)置是無效的。他在請求的時候最終會把origin刪除。好比上面的圖片一樣,命名是有的。
為了測試增加頭信息,如下面的代碼:
// 打開和URL之間的連接
conn = (HttpURLConnection) realUrl.openConnection();
// 設(shè)置 origin 頭信息,大小寫無差異
conn.setRequestProperty("origin1","http://suancuo.cn");origin1 不會消失。證明只會去掉origin信息
二、origin信息丟失解決辦法
其實(shí)很簡單,設(shè)置下允許頭信息allowRestrictedHeaders為true代碼如下。
//解決 請求頭丟失的問題(origin)
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
// 打開和URL之間的連接
conn = (HttpURLConnection) realUrl.openConnection();這樣就解決了。
這個問題用OKhttp是不會有的。一個隱藏的坑解決了,
版權(quán)所屬:SO JSON在線解析
原文地址:http://suancuo.cn/blog/534.html
轉(zhuǎn)載時必須以鏈接形式注明原始出處及本聲明。
如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。
