3

Picasa API では、クロス ドメインの GET リクエストが可能です。しかし、画像/コメントを投稿しようとすると、次のエラーが発生しました。

XMLHttpRequest を読み込めませんhttps://picasaweb.google.com/data/feed/api/user/default/albumid/5825390619150171601?access_token=ya29.AHES6ZSR2XSlImdSJxNBVczzfz4DPoW3vRvywTNg8ELNs6OStqSBbTM。オリジン ' http://localhost ' は Access-Control-Allow-Origin で許可されていません。

var url = 'https://picasaweb.google.com/data/feed/api/user/default/albumid/' + albumId + '?access_token=' + myToken;

     $.ajax({
          url: url,
          data: f /*image file object*/,
          contentType: f.type,
          processData: false,
          type: "POST",
          success:function(data){
            successCallback(data);
           },
          error:function(data){
            failureCallback(data);
           }
       });

ps :同様の stackoverflow ディスカッションへのリンクを次に示します。

4

1 に答える 1

3

悪いことに、以前は誰もこれに答えませんでした。知っておくと便利なことがいくつかあります...

Access-Control-Allow-Origin ヘッダーをサーバーの応答に含め、ドメイン名または * のいずれかに設定する必要があります

Access-Control-Allow-Origin ヘッダーを使用して Picasa から公開アルバムを取得すると、* に設定されます

ただし、ヘッダー Access-Control-Allow-Origin の上にあるような認証を必要とする機能にアクセスすると、*.google.com として返されます。

これに関する私の理論は、Google の無料のストレージ バックエンドを使用する Picasa サイトを構築する人々を防ぐことですが、実際には Picasa サイト自体の競合相手です。

最後に重要な注意事項として、セキュリティ トークンをクエリ文字列として送信しないでください。https/ssl を使用している場合でも、URL 自体は暗号化されていないため、誰かがネットワーク トラフィックを傍受してセキュリティ トークンを盗むことができます。Picasa がそれを受け入れるかどうかさえわかりません。次のようにする必要があります。

 var url = 'https://picasaweb.google.com/data/feed/api/user/default/albumid/' + albumId;
 $.ajax({
      url: url,
      data: f /*image file object*/,
      contentType: f.type,
      processData: false,
      type: "POST",
      beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer " + myToken);
      },
      success:function(data){
        successCallback(data);
       },
      error:function(data){
        failureCallback(data);
       }
   });
于 2013-12-25T11:55:16.710 に答える