有人請幫助 - 一直在努力解決這個糟糕的問題!煩惱! POST返回302找到的對象在HttpWebRequest中移動錯誤
我在做什麼 - 我有一個ASPX頁面,我從中發起一個GET,然後POST一個HTTPS頁面,以便登錄到該頁面。我花了相當多的時間比較我的GET和POST構建到使用fiddler(協議分析器)的瀏覽器GET/POST,並且我的請求沒有問題。
然而,當我嘗試通過瀏覽器登錄,一切工作正常,並登錄,當我跑我的網頁,我可以看到正確的GET和POST,但我得到一個302找到「對象移動錯誤」
本來我認爲這是一個cookie問題,但經過多次實驗後,我很確定這與cookie無關。我在瀏覽器上禁用了Cookie和JavaScript,並且嘗試了,並且頁面也沒有任何問題。然後我模擬確切的GET/POST。
這是我的情況:
- 我GET和瀏覽器得到的是完全相同的
- 從站點200 OK應答是一致,除了它具有略微不同的長度3個VIEWSTATE變量相同(爲什麼?爲什麼不同,即使GET相同?)
- 我的POST和瀏覽器POST完全相同除了3 Viewstate變量(我從GET正確填充它)
- 然而,瀏覽器登錄,而我得到302找到/對象移動錯誤。
一對夫婦的其他東西 -
一)我複製從最近的瀏覽器POST自檢響應,並取代了我的post數據使用這個瀏覽器POST和這讓我正確的反應!這表明
- 我的頭就好了
- 我的編碼設置/環境等等都很好
- 這是在ViewState值,這隻能是因爲瀏覽器首先把它交給我腥(有沒有腐敗我的解析GET VIEWSTATE變量,並在後期使用它,它是完美的罰款)
更新我也曾嘗試Web客戶端只是爲了檢查 - 沒有任何區別,同樣的302 更新的對象主要移動指向一個錯誤頁面,說'發生了嚴重的錯誤等等' - POST在服務器上導致錯誤,a nd良好的POST(瀏覽器)和我的POST之間的唯一區別是Viewstate變量。
所以 - 我做錯了什麼?爲什麼這個殘酷的世界折磨着我?
(PS - 在瀏覽器序列中一個其他區別,不知道它是如何事項)
Browser:
CONNECT
GET
GET (for a favicon, which returns an error)
CONNECT
POST (success)
Me:
CONNECT
GET
POST (flaming failure, 302 - page moved)
,併爲那些誰照顧,我的帖子標題施工規範
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
myRequest.UserAgent = chromeUserAgent;
//myRequest.CookieContainer = cCookies;
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.Accept = chromeAccept;
myRequest.Referer = url;
myRequest.AllowAutoRedirect = false;
myRequest.Host = "thesitethatskillingme.com";
myRequest.Headers.Add("Origin", "https://thesitethatskillingme.com");
myRequest.Headers.Add("Accept-Encoding", chromeAcceptEncoding);
myRequest.Headers.Add("Accept-Language", chromeAcceptLanguage);
myRequest.Headers.Add("Accept-Charset", chromeAcceptCharset);
myRequest.Headers.Add("Cache-Control", "max-age=0");
myRequest.ServicePoint.Expect100Continue = false;
myRequest.Method = "POST";
myRequest.KeepAlive = true;
ASCIIEncoding ascii = new ASCIIEncoding();
byte[] bData = ascii.GetBytes(data);
myRequest.ContentLength = bData.Length;
using (Stream oStream = myRequest.GetRequestStream())
oStream.Write(bData, 0, bData.Length);
..然後閱讀流等沒有餅乾。
你確定瀏覽器什麼時候成功登錄,它沒有得到302響應嗎?它只會自動關注重定向。當你得到302時,響應中的Location標題(它試圖向你發送信息的地方是什麼?) – superfell 2010-08-14 18:27:56
對於瀏覽器:在fiddler中,我看不到302響應 - 只是POST的直接HTTP/1.1 200 OK響應,但當我做POST時,我得到302。我會假設我會在消息級看到任何自動跟隨在提琴手中,但我什麼都看不到。它是GET,然後POST - 成功200 OK。它必須是一些微不足道的東西,只是無法弄清楚 - 爲什麼對我的完全相同的GET的反應與瀏覽器接收到的有些不同?我認爲這是問題所在...... – Gerry 2010-08-14 19:04:34
是否應該有自動重定向?你是在做一個Response.Redirect,或者是一個Server.Transfer的地方? – Doobi 2010-08-14 22:09:53