2012-04-04 12 views
0

curl --digest -u username:password -d "mydata" http://example.com/push のように、JavaScriptをクロームプラグインとして実装したいと考えています。 ここに私のコードです。HTTPポストの認証用XML用JavaScript

<html> 
<head> 
</head> 
<body> 
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
<script type='text/javascript' src="jquery.base64.js"></script> 
<script language="javascript"> 

     function setHeader(xhr) { 
      xhr.setRequestHeader('Authorization', $.base64Encode('username:password')); 
     } 

     $.ajax({ 
     type: "POST", 
     url: "http://example.com/push", 
     data: "<Phone><Data>mydata</Data></Phone>", 
     xhrFields: { 
      withCredentials: true 
     }, 
     crossDomain: true, 
     beforeSend: setHeader, 
     success: function (data,status,xhr){ 
      //do something 
     } 
     }); 
</script> 
</body> 
</html> 

これは、HTTP基本認証を使用するクロスドメインPOSTです。 CORSのために、POSTではなくクロムブラウザが、発信のためにOPTIONSメッセージチャレンジを送信します。 URLを同じドメインに変更した場合は正常に機能します。 認証を無効にすると、認証も機能します。 しかし、他のドメインにPOSTする必要があります。これは私のコントロール下にありません。つまり、easyXDMのようなソリューションは使えません。また、HTTP基本認証が必要です。私は1週間ソリューションを探していました。どんなヒントもありがとうございます。

+0

、あなたがそれについてできることは何もありません。 – SLaks

答えて

0

あなたがしようとしました:

xhr.setRequestHeader("Authorization", "Basic " + encodeBase64(username + ":" + password) //usage: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

参考:彼らはCORS( `OPTIONS`)をサポートしていない場合はhttp://www.w3.org/Protocols/HTTP/1.0/spec.html#BasicAA

+0

私は試しました。同じ。 POSTではなくOPTIONSが送信されます。 –