Có cách nào để lấy đối tượng HttpWebRequest
để xem xét tiêu đề tập hợp cookie khi được tự động chuyển hướng đến một trang khác thông qua tính năng AllowAutoRedirect
không? Tôi cần nó để duy trì thông tin cookie trên các chuyển hướng; Tôi không muốn tự mình thực hiện chuyển hướng nếu khung làm việc có thể làm điều này cho tôi. Đây phải là một yêu cầu phổ biến vì hầu hết các trang đăng nhập tôi đã nhìn thấy thường làm điều này.Cách nhận HttpWebRequest.AllowAutoRedirect để đặt cookie khi thực hiện GET/POST trên trang được chỉnh sửa?
10
A
Trả lời
5
Tôi biết để thực hiện các yêu cầu riêng biệt (ví dụ: các đối tượng HttpRequest khác nhau) hoạt động với cookie, bạn cần đặt thuộc tính HttpRequest.CookieContainer trên cả hai yêu cầu cho cùng một phiên bản CookieContainer. Bạn có thể cần điều đó cho trường hợp này là tốt.
0
Nếu bạn không muốn sử dụng CookieContainer, mã sau sẽ truy cập trang, cung cấp cookie trong tham số. Sau đó, nó sẽ tải xuống tất cả các cookie được đặt bởi trang đó và trả lại chúng dưới dạng Danh sách các chuỗi.
Lưu ý rằng AllowAutoRedirect được đặt thành false. Nếu bạn muốn theo dõi chuyển hướng, hãy kéo đối tượng đó ra khỏi tiêu đề HttpWebResponse và sau đó tự xây dựng một yêu cầu web khác.
Public Shared Function GetCookiesSetByPage(ByVal strUrl As String, ByVal cookieToProvide As String) As IEnumerable(Of String)
Dim req As System.Net.HttpWebRequest
Dim res As System.Net.HttpWebResponse
Dim sr As System.IO.StreamReader
'--notice that the instance is created using webrequest
'--this is what microsoft recomends
req = System.Net.WebRequest.Create(strUrl)
'set the standard header information
req.Accept = "*/*"
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)"
req.ContentType = "application/x-www-form-urlencoded"
req.AllowAutoRedirect = False
req.Headers.Add(HttpRequestHeader.Cookie, cookieToProvide)
res = req.GetResponse()
'read in the page
sr = New System.IO.StreamReader(res.GetResponseStream())
Dim strResponse As String = sr.ReadToEnd
'Get the cooking from teh response
Dim strCookie As String = res.Headers(System.Net.HttpResponseHeader.SetCookie)
Dim strRedirectLocation As String = res.Headers(System.Net.HttpResponseHeader.Location)
Dim result As New List(Of String)
If Not strCookie = Nothing Then
result.Add(strCookie)
End If
result.Add(strRedirectLocation)
Return result
End Function
Các vấn đề liên quan
- 1. Làm cách nào để xử lý xác thực bằng HttpWebRequest.AllowAutoRedirect?
- 2. Chỉnh sửa và xem Cookie
- 3. Xác thực trên Chỉnh sửa Văn bản
- 4. Tạo Addon để sửa đổi dữ liệu JavaScript trước khi được thực hiện trên Firefox
- 5. Trình chỉnh sửa cookie dành cho IE?
- 6. Làm cách nào để thực hiện nút Chỉnh sửa Android 'Xong' của Android và ẩn bàn phím khi được nhấp?
- 7. Đặt trang web rộng cookie
- 8. Bất kỳ ai biết tiện ích để xem/chỉnh sửa cookie trên IE 8?
- 9. Cài đặt Inno: Trang Thuật sĩ Tuỳ chỉnh dựa trên loại trang hiện tại
- 10. Cookie PHP được đặt ở trang làm mới thứ hai
- 11. Làm cách nào để nhận được giá trị từ trình chỉnh sửa ACE?
- 12. Cách "tốt nhất" để nhận và đặt giá trị cookie đơn bằng cách sử dụng JavaScript
- 13. Chỉnh sửa nội dòng có thể chỉnh sửa X trong Django - cách nhận bảo vệ CSRF?
- 14. Làm cách nào để đặt cookie phản hồi trên HttpReponseMessage?
- 15. Hành động tùy chỉnh SharePoint trên trang thiết đặt trang
- 16. Làm cách nào để đặt cookie trên HttpRequestMessage của HttpClient
- 17. Thay đổi chỉ mục z để thực hiện div được nhấp xuất hiện trên đầu trang
- 18. Tại sao cookie jQuery không thực sự đặt cookie?
- 19. Số dòng Javascript được thực hiện trong khi tải trang
- 20. Cách tốt nhất để thực hiện phân trang nhiều trang trên một trang trong mã vạch
- 21. Làm cách nào để biết trang có đang ở chế độ chỉnh sửa trên trang web không xuất bản
- 22. Làm cách nào để tùy chỉnh tên cookie Xác thực Mẫu?
- 23. Typo3: Hook sau khi tạo hoặc chỉnh sửa trang
- 24. Tôi làm cách nào để thực hiện yêu cầu http bằng cookie trên Android?
- 25. Cách đặt biểu tượng kiểu chỉnh sửa tùy chỉnh trong UITableViewCell khi đang ở chế độ chỉnh sửa
- 26. Thực hiện lắc div khi tải trang?
- 27. thực hiện chỉnh sửa tế bào jqgrid datepicker
- 28. Cách để JTable ở trên ô đã chỉnh sửa
- 29. Cách tạo hoặc chỉnh sửa nội dung tệp trên root
- 30. Làm cách nào để đặt lại trình chỉnh sửa Codemirror?
Vì một số lý do, điều này không hiệu quả đối với tôi. Khi domainA.com đã phát hành SetCookie cookie = val cho ".subdomain.domainB.com", rõ ràng là khoảng thời gian bắt đầu của giá trị tên miền cookie nhầm lẫn .NET được xây dựng trong lớp CookieContainer và khi yêu cầu được thực hiện cho subdomain.domainB.com , cookie chưa bao giờ được gửi cùng với các yêu cầu đó, mặc dù CookieContainer đã được gán đúng yêu cầu. –
Vì vậy, giải pháp của tôi là trong trường hợp cụ thể đơn giản của tôi (tương tác hiệu quả với chỉ 1 trang web) là: 1) dissalow tự động chuyển hướng, vì vậy tôi nhận được để xem tất cả các tiêu đề Set-cookie và có thể phân tích chúng; 2) Lưu tất cả các cặp tên-giá trị cookie vào một từ điển (kiểm tra tính duy nhất và cập nhật các giá trị khi cần); và cuối cùng: 3) với mỗi yêu cầu tiếp theo trun rằng dữ liệu nhị phân vào một tiêu đề Cookies được tạo tùy chỉnh theo cách thủ công được thêm vào yêu cầu (lưu ý rằng CookiContrainer của yêu cầu phải là null để nó hoạt động); sau đó tất cả các cookie đã trải qua và nó hoạt động. –