2009-10-30 7 views
10

XMLHTTPRequestを使用して、Twitterでアップデートを取得しようとしています。XMLHTTPRequestによる基本認証

var XMLReq = new XMLHttpRequest(); 
XMLReq.open("GET", "http://twitter.com/account/verify_credentials.json", false, "TestAct", "password"); 
XMLReq.send(null); 

ただし、私のスニファを使用すると、承認ヘッダーが通過することはありません。したがって、私はTwitterから401エラー応答を取得します。

アカウントとパスワードが正しく入力されています。

誰でもこれを試みますか?誰も私にいくつかのポインタを与えることができますか?ありがとうございました。

答えて

1

オリジンポリシーのため、ドメインから別のドメインにXMLHttpRequestを作成することはできません。例えば。スクリプトがtwitter.comから読み込まれていない限り、http://twitter.com/...のURLを使用することはできません。あなたのスクリプトがhttp://localhost/からロードされている場合は、AJAXリクエストもlocalhostに移動する必要があります。

9

クロスオリジン要求では、ユーザー資格情報を送信する場合は、withCredentialsフラグを明示的に設定する必要があります。

はあなただけで、次のようにbase64でエンコードされた文字列でAuthorizationヘッダー、ユーザー名とパスワードを追加する必要があります(user credentialsはHTTP認証を含む場合)

+1

新しいリンクがhttps://xhr.spec.whatwg.org/#the-withcredentials-attributeとhttps://xhr.spec.whatwg.org/#user-credentials – sberder

44

http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute参照してください。

XMLReq.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
+1

万一 'client'ですコードスニペットで 'XMLReq'(質問の変数)ですか? – JaKu

+0

実際には、あなたは正しいです。このメソッドはXMLHttpRequest.setRequestHeader(header、value)です。 –