У меня есть код VBScript, который отправляет запрос AJAX на сервер с cookie с помощью MSXML2.XMLHTTP
объект. Я читал о этот баг и обходной путь. Вызывая setRequestHeader
два раза, куки должны быть правильно отправлены .. но этого не происходит ..
Код VBScript:
Dim http
set http = WScript.CreateObject("MSXML2.XMLHTTP")
http.open "POST", "http://localhost/echo", false
http.setRequestHeader "X-Requested-With", "XMLHttpRequest"http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"http.setRequestHeader "Cookie", "SESSID=f3rds19k7qu58pvmb80561dc76" '1st invoke '
http.setRequestHeader "Cookie", "SESSID=f3rds19k7qu58pvmb80561dc76" '2nd invoke '
http.send sReq
msgbox http.responseText
И на стороне сервера в http://localhost/echo/index.php
содержит код
<?php print_r(getallheaders());?>
этот код php в основном только повторяет заголовок запроса обратно к клиенту, и даже я вызываю дважды, что я получил:
Array
(
[Accept] => */*
[X-Requested-With] => XMLHttpRequest
[Accept-Language] => id
[Accept-Encoding] => gzip, deflate
[User-Agent] => Mozilla/4.0 (bla..bla..bla...)
[Host] => localhost
[Connection] => Keep-Alive
[Cache-Control] => no-cache
)
Как вы можете видеть, нет cookie в шапке. Как сделать так, чтобы куки отправлялись на сервер?
Наконец я нашел решение … просто .. просто используйте WinHTTP.WinHTTPRequest
вместо MSXML2.XMLHTTP
Dim http
set http = WScript.CreateObject("WinHTTP.WinHTTPRequest.5.1")
http.open "POST", "http://localhost/echo", false
http.setRequestHeader "X-Requested-With", "XMLHttpRequest"http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"http.setRequestHeader "Cookie", "SESSID=f3rds19k7qu58pvmb80561dc76"
msgbox http.responseText
Других решений пока нет …