1. ホーム
  2. jquery

[解決済み] Google APIへのjQuery Postの送信でAccess-Control-Allow-Originエラーが発生する。

2022-05-30 03:33:40

質問

Access-Control-Allow-Origin」エラーについていろいろ読みましたが、何を修正しなければならないのかがわかりません :(

Google Moderator APIで遊んでいるのですが、以下のような場合です。 新しいシリーズを追加する を受信します。

XMLHttpRequest cannot load 
https://www.googleapis.com/moderator/v1/series?key=[key]
&data%5Bdescription%5D=Share+and+rank+tips+for+eating+healthily+on+the+cheaps!
&data%5Bname%5D=Eating+Healthy+%26+Cheap
&data%5BvideoSubmissionAllowed%5D=false. 
Origin [my_domain] is not allowed by Access-Control-Allow-Origin.

コールバックパラメータの有無、ヘッダに'Access-Control-Allow-Origin *'を追加することを試してみました。そして、私は認証ヘッダを追加する必要があり、私は$.ajaxからbeforeCallなしでそれを行う方法を知らないので、適用する場合、ここで$.getJSONを使用する方法がわからない:/。

この暗闇のための任意の光u.u?

これがコードです。

<script src="http://www.google.com/jsapi"></script>

<script type="text/javascript">

var scope = "https://www.googleapis.com/auth/moderator";
var token = '';

function create(){
     if (token == '')
      token = doCheck();

     var myData = {
      "data": {
        "description": "Share and rank tips for eating healthily on the cheaps!", 
        "name": "Eating Healthy & Cheap", 
        "videoSubmissionAllowed": false
      }
    };

    $.ajax({

        url: 'https://www.googleapis.com/moderator/v1/series?key='+key,
        type: 'POST',
        callback: '?',
        data: myData,
        datatype: 'application/json',
        success: function() { alert("Success"); },
        error: function() { alert('Failed!'); },
        beforeSend: setHeader

    });
}

function setHeader(xhr) {

  xhr.setRequestHeader('Authorization', token);
}

function doLogin(){ 
    if (token == ''){
       token = google.accounts.user.login(scope);
    }else{
       alert('already logged');
    }
}


function doCheck(){             
    token = google.accounts.user.checkLogin(scope);
    return token;
}
</script>
...
...
<div data-role="content">
    <input type="button" value="Login" onclick="doLogin();">
    <input type="button" value="Get data" onclick="getModerator();">
    <input type="button" value="Create" onclick="create();">
</div><!-- /content -->

どのように解決するのですか?

Access-Control-Allow-Originエラーを解決するには、dataTypeパラメータを次のように変更します。 dataType:'jsonp' に変更し、さらに crossDomain:true

$.ajax({

    url: 'https://www.googleapis.com/moderator/v1/series?key='+key,
    data: myData,
    type: 'GET',
    crossDomain: true,
    dataType: 'jsonp',
    success: function() { alert("Success"); },
    error: function() { alert('Failed!'); },
    beforeSend: setHeader
});