Access-Control-Allow-Origin-Fehler beim Senden eines jQuery-Posts an Google APIs
Lese ich viel, für die "Access-Control-Allow-Origin" - Fehler, aber ich verstehe nicht, was ich zu beheben 🙁
Spiele ich mit Google Moderator API, aber wenn ich versuche, hinzufügen neuer serie ich erhalten:
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.
Ich habe versucht, mit und ohne parameter callback, habe ich versucht, hinzuzufügen 'Access-Control-Allow-Origin"*", um den header. Und ich weiß nicht, wie zu verwenden $.getJSON hier, wenn anwenden, weil ich dazu den Autorisierungs-header und ich weiß nicht, wie es zu tun, ohne beforeCall aus $.ajax :/
Jedes Licht, für die Dunkelheit u.u?
Das ist der code:
<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 -->
InformationsquelleAutor der Frage rubdottocom | 2011-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löste ich die Access-Control-Allow-Origin-Fehler beim ändern der Datentyp parameter zu dataType:'jsonp' und das hinzufügen einer crossDomain:true
InformationsquelleAutor der Antwort rubdottocom
Ich hatte genau das gleiche Problem und es war nicht cross-domain-aber die gleiche domain. Ich habe gerade diese Zeile in die php-Datei-handling der ajax-request.
Es funktionierte wie ein Charme. Vielen Dank an die poster
InformationsquelleAutor der Antwort Muhammad Tanweer
Wenn Sie diesen Fehler versuchen zu konsumieren, ein service, können Sie nicht fügen Sie die Kopfzeile
Access-Control-Allow-Origin *
in der Anwendung, aber Sie können vor dem server einen reverse-proxy, der Fehler kann vermieden werden mit einem header umschreiben.Vorausgesetzt, die Anwendung läuft auf dem port 8080 (public domain bei http://www.mydomain.com), und setzen Sie den reverse-proxy auf dem gleichen host auf port 80, dies ist die Konfiguration für Nginx reverse-proxy:
InformationsquelleAutor der Antwort Mariano Ruiz
Ja, der moment, jQuery sieht die URL gehört zu einer anderen Domäne, es wird davon ausgegangen, dass call als cross-domain-Aufruf, so
crossdomain:true
ist hier nicht erforderlich.Auch wichtig zu beachten, dass Sie nicht einen synchronen Aufruf mit
$.ajax
wenn Ihre URL gehört zu einer anderen domain (cross-domain) oder Sie sind mit JSONP. Nur asynchrone Aufrufe sind nicht gestattet.Hinweis: Sie können den Kundendienst rufen synchron, wenn Sie angeben, die
async:false
mit Ihrer Anfrage.InformationsquelleAutor der Antwort Vivek Jain
In meinem Fall der sub-domain-Namen der das problem verursacht. Hier sind die details
Ich verwendet
app_development.something.com
hier Unterstrich(_
) sub-domain erstellen CORS Fehler. Nach dem Wechselapp_development
zuapp-development
es funktioniert gut.InformationsquelleAutor der Antwort Zero