2013-07-19 46 views
0

我已經創建了一個HttpClient的在C#NET 4.5的HttpClient反正發送的cookie(儘管改變域)

   Client = new HttpClient(handler); 

的處理程序是這樣的

var handler = new HttpClientHandler 
     { 
      CookieContainer = CookieContainer, 
      AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
     }; 

我在一個網站發送一些請求,讓我們說這是xyzevents.com。我通常會收到我的回覆,我存儲了一些從「Set Cookie:*」命令收到的cookie,這一切都很好。

但是,在此之後,我嘗試與網站xyz.com進行溝通。爲了做到這一點,我必須使用我之前從xyzevents.com存儲的cookie發送我的請求。 HttpClient不能這樣做,因爲它看到主機不同於xyzevents.com。

有沒有辦法繞過檢查,併發送我的請求沒有問題?

回答

0

我不認爲有反正這個檢查「禁用」。我認爲這是HttpClient,最終決定哪些cookie應該發送,而不是容器。最後,隨機發送cookie的安全風險相當大。因此,您可以輕鬆地循環訪問從xyz.com收到的所有Cookie,手動創建它們,並且域已更改但值相同。然後將它們添加到發送到xyzevents.com的新集合中。

+0

想不到一種方法來編輯我收到的cookies。特別是現在該客戶端是在受保護的請求基類中創建的。 –

+0

@PanosPaschalis你不會「編輯」它們。您只需循環訪問第一個容器中的cookie,然後從該cookie獲取值並使用正確的域名創建新的cookie,將其添加到第二個容器。然後將第二個容器分配給處理程序。 –

+0

是的,我似乎無法在代碼執行過程中訪問cookiecontainer,我只能訪問HttpClient(客戶端)。 –