Czy istnieje sposób, aby obiekt HttpWebRequest
wziął pod uwagę nagłówek zestawu plików cookie podczas automatycznego przekierowania na inną stronę za pomocą funkcji AllowAutoRedirect
? Potrzebuję go do utrzymania informacji o plikach cookie w przekierowaniach; Raczej nie będę musiał implementować przekierowania, jeśli ramy mogą to dla mnie zrobić. To musi być powszechne żądanie, ponieważ większość stron logowania, które widziałem, zwykle to robi.Jak uzyskać HttpWebRequest.AllowAutoRedirect, aby ustawić pliki cookie podczas wykonywania GET/POST na poprawionej stronie?
10
A
Odpowiedz
5
Wiem, że osobne żądania (np. Różne obiekty HttpRequest) działają z plikami cookie, należy ustawić właściwość HttpRequest.CookieContainer w obu żądaniach do tego samego wystąpienia obiektu CookieContainer. Możesz potrzebować tego również w tym przypadku.
0
Jeśli nie chcesz używać kontenera CookieContainer, poniższy kod uzyska dostęp do strony, podając plik cookie w parametrze. Następnie pobierze wszystkie pliki cookie ustawione przez tę stronę i zwróci je jako Listę łańcuchów.
Należy pamiętać, że parametr AllowAutoRedirect ma wartość false. Jeśli chcesz wykonać przekierowanie, wyciągnij ten obiekt z nagłówków HttpWebResponse, a następnie ręcznie skonstruuj inne żądanie WWW.
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
Powiązane problemy
- 1. Jak ustawić datę wygaśnięcia na pliki cookie klienta?
- 2. Jak uzyskać i ustawić pliki cookie w Zope i Plone?
- 3. Jak włączyć przeglądarkę Chrome, aby zezwolić na lokalne pliki cookie? Pliki cookie, które można instalować:
- 4. Jak uzyskać pliki cookie innych firm?
- 5. Jak mogę uzyskać wszystkie pliki cookie CookieContainer?
- 6. Jak można uzyskać pliki cookie z HttpClientHandler.CookieContainer
- 7. Rails/rspec: jak ustawić pliki cookie w specyfikacji żądania?
- 8. Android: jak przechowywać pliki cookie?
- 9. Spraw, aby Axios automatycznie wysyłał pliki cookie w swoich żądaniach.
- 10. Flask: Jak usunąć pliki cookie?
- 11. Wygasające pliki cookie z AngularJS?
- 12. ustawić plik cookie, aby wygasł na koniec sesji? asp.net
- 13. Trwałe pliki cookie w aplikacji na iOS?
- 14. Jak ustawić i sprawdzić pliki cookie za pomocą JAX-RS?
- 15. Czy to możliwe, aby przesłać pliki cookie w Android DownloadManager
- 16. WebView i pliki Cookie na Androidzie
- 17. Jak mogę zachować pliki cookie podczas korzystania z HTTPUrlConnection?
- 18. Jak mogę ustawić pliki cookie za pomocą AFNetworking 2.0 podczas przesyłania obrazu z parametrami?
- 19. Pliki cookie w ASP vnext
- 20. Pliki cookie w domenie intranetowej
- 21. Jak mogę ustawić i uzyskać ciasteczka (po stronie serwera) w Meteor?
- 22. Jak mogę ustawić ccshared = -fPIC podczas wykonywania ./configure?
- 23. Wyczyść pliki cookie symulatora iPhone'a
- 24. Jak usunąć wszystkie pliki cookie w Angularjs?
- 25. Czy można niezawodnie ustawić lub usunąć plik cookie podczas przetwarzania po stronie serwera wywołania Ajax (XHR)?
- 26. Jak działają "śledzące pliki cookie" firm zewnętrznych?
- 27. Pliki cookie ASP.NET z wieloma wartościami - jak?
- 28. Jak ustawić cookie w Jersey?
- 29. Użyj inspektora localStorage przeglądarki Firefox, aby edytować pliki cookie?
- 30. Listonosz Chrome nie pokazuje przycisku Pliki cookie
Z jakiegoś powodu nie zadziałało to dla mnie. Kiedy domainA.com wydał SetCookie cookie = val dla ".subdomain.domainB.com", najwyraźniej okres na początku wartości cookie oznaczał mylącą wbudowaną klasę CookieContainer .NET oraz żądania dotyczące subdomain.domainB.com , ciasteczko nigdy nie zostało wysłane z tymi żądaniami, mimo że CookieContainer został poprawnie przypisany do Żądania. –
Więc moje rozwiązanie było w moim konkretnym prostym przypadku (efektywna interakcja z tylko jedną stroną): 1) disalow auto-przekierowania, więc widzę wszystkie nagłówki Set-cookies i mogę je analizować; 2) Zapisz wszystkie pary nazwy-plików cookie w słowniku (w razie potrzeby sprawdzaj unikatowość i aktualizuj wartości); i na koniec: 3) przy każdej kolejnej prośbie trun ten dane stronicowania do specjalnie spreparowanego nagłówka Cookies dodawanego ręcznie do żądania (zauważ, że CookiContrainer żądania musi mieć wartość zerową, aby działał); wszystkie ciasteczka przeszły i zadziałało. –