1

基本認証が必要な別のドメインのサーバーに POST 要求を送信しようとしています。

beforeSend と withCredentials のすべての組み合わせを試しましたが、OPTIONS プリフライト リクエストで基本的な認証ヘッダーが送信されることはありません。

 $.ajax({
      url: anotherdomain,
      data: data,
      cache: false,
      contentType: false,
      processData: false,
      type: 'POST',
      dataType:'json',
      xhrFields: {
         withCredentials: true
      },
      crossDomain: true,
      beforeSend: function(xhr) {
        xhr.setRequestHeader('Authorization', 'Basic *');
          xhr.withCredentials = true;        
      }

このリクエストを成功させる唯一の方法は、dataType を 'jsonp' に設定するか、リクエストの 'type' を GET に設定することです。

この問題に対する唯一の解決策は、OPTIONS 要求のために別のドメイン サーバーから Basic Auth 要件を削除することですか?

ありがとう。

4

1 に答える 1

0

サーバー上でヘッダーも許可する必要があります: これは php の例です (これはすべてのオリジンのリクエストに対してオープンです。ajax を生成するサイトにのみ制限することをお勧めします):

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
于 2015-01-31T08:32:07.927 に答える