我读了很多有关“ 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 *”添加到标题中。而且我不知道如何在这里使用$ .getJSON(如果适用),因为我必须添加Authorization标头,而且如果没有$ .ajax中的beforeCall,我也不知道该怎么做:/
这个黑暗的你有光吗?
那是代码:
<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 -->
我解决了将dataType参数修改为 dataType:’jsonp’ 并添加 crossDomain:true 的Access-Control- Allow-Origin错误 __
$.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 });