Следующая функция работает в IE, но не в Chrome:Идентификация пользователя с помощью XMLHttpRequest работает в IE, а не в Chrome?
function doStuff() {
var request = new XMLHttpRequest();
request.open("POST", "http://twitter.com/statuses/update.json", true, "USERNAME-HERE", "PASSWORD-HERE");
request.send("status=STATUS UPDATE HERE");
}
Chrome генерирует следующий запрос. Обратите внимание, заголовок Authorization отсутствует:
OPTIONS /statuses/update.json HTTP/1.1 Host: twitter.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.78 Safari/532.5 Access-Control-Request-Method: POST Origin: file:// Access-Control-Request-Headers: Content-Type Accept: */* Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Я получаю следующий ответ (HTTP 401):
HTTP/1.1 401 Unauthorized Date: Wed, 03 Feb 2010 00:39:33 GMT Server: hi Status: 401 Unauthorized WWW-Authenticate: Basic realm="Twitter API" X-Runtime: 0.00107 Content-Type: application/json; charset=utf-8 Cache-Control: no-cache, max-age=300 Set-Cookie: _twitter_sess=BAh7BzoHaWQiJTUxMTc2Nzk4N2U0YzMzZmU0ZTQyNzI4NjQyYjI3ODE2Igpm%250AbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAG%250AOgpAdXNlZHsA--bb61324c3ba12c3cd1794b3895a906a69c154edd; domain=.twitter.com; path=/ Expires: Wed, 03 Feb 2010 00:44:33 GMT Vary: Accept-Encoding Content-Length: 73 Connection: close {"request":"/statuses/update.json","error":"Could not authenticate you."}
Итак, как я должен передать имя пользователя и пароль для XHR? Документация Webkit/Safari говорит, что метод open должен принимать эти параметры, поэтому я не уверен, почему он терпит неудачу.
happy request.setRequestHeader() был полезен для вас в конце концов. –
Как вы обошли вызов перекрестного домена? Или твиттер правильно реагирует на ВАРИАНТЫ? – BrainSlugs83
Перекрестный домен не был для меня проблемой ... потому что то, что я делал, было особенным. –