Access-Control-Allow-Origin-feil ved sending av en jQuery-post til Googles API-er
Jeg leste mye for ' Access-Control-Allow-Origin ' feil, men jeg forstår ikke hva jeg må fikse:(
Jeg spiller med Google Moderator API, men når jeg prøver å legge til ny serie mottar jeg:
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.
Jeg prøvde med og uten tilbakeringingsparameter, jeg prøvde å legge til 'Access-Control-Allow-Origin *' til overskriften. Og jeg vet ikke hvordan jeg skal bruke $ .getJSON her, hvis det gjelder, fordi jeg må legge til autorisasjonsoverskriften, og jeg vet ikke hvordan jeg gjør det uten beforeCall fra $ .ajax :/
Noe lys for dette mørket u.u?
Det er koden:
<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 -->
136
3
Jeg løste Access-Control-Allow-Origin-feilen ved å endre dataType-parameteren til dataType:'jsonp' og legge til en crossDomain:true.
Jeg hadde nøyaktig det samme problemet, og det var ikke kryssdomene, men det samme domenet. Jeg har nettopp lagt til denne linjen i php-filen som håndterte ajax-forespørselen.
Det fungerte som en sjarm. Takk til plakaten
Ja, i det øyeblikket jQuery ser at URL-en tilhører et annet domene, antar den at anropet er et anrop på tvers av domener, slik at
crossdomain:true
ikke er nødvendig her.Det er også viktig å merke seg at du ikke kan foreta et synkront kall med
$.ajax
hvis nettadressen din tilhører et annet domene (kryssdomene) eller du bruker JSONP. Bare asynk-kall er tillatt.Merk: Du kan kalle tjenesten synkront hvis du spesifiserer
async:false
med forespørselen din.