crossDomain Request liefert nur JSON

DaRealMC

Erfahrenes Mitglied
Hi zusammen,

ich habe vor, für eine SaaS-Lösung ein eigenes Dashboard zu schreiben. Es wird vom Hersteller auch eine API angeboten. Aber ich bekomme meine AJAX-Abfrage einfach nciht zum laufen. Da ich aber noch recht neu auf dem Gebiet bin, möchte ich das erst mal nicht als Ticket an den Hersteller melden.

HTML:
$.ajax({
		type: "GET",
		url:"https://blablabla",
		dataType: 'jsonp, 
		username: 'usr',
		password: 'pwd',
		success:function(result){
			alert(123);
			}
		});

Da die Antwort JSON statt JSONP ist, bekomme ich
Code:
SyntaxError: invalid label

Ändere ich den dataType auf json wird die Anfrage gar nicht erst gesendet
Nehme ich zusätzlich username und password heraus wird die Anfrage gesendet, aber ich bekomme 401, weil ich nicht angemeldet bin



habe es auch schon mit
HTML:
headers: { 
			Accept : "application/javascript; charset=utf-8",
			"Content-Type": "application/javascript; charset=utf-8"
		},
und allen möglichen dataType-Variationen mit "jsonp text json" etc probiert.
Immer der gleiche Fehler.

Habe ich das Problem richtig verstanden? (wegen crossDomain kann ich nur JSONP, aber dann darf die Antwort kein JSON sein)
Gibt es dafür eine Lösung auf meiner Seite oder muss einfach der Provider hier etwas tun?
 
JSONP ist kein AJAX, sondern eine Art Pseudo-AJAX, welches in jQuery wie richtiges AJAX gehandelt wird und auch gleich funktioniert, aber eben kein asynchroner Request ist, sondern es wird ein Script-Tag erstellt, welcher auf diese Datei verweist, und dann eine zufällig generierte temporäre Funktion aufruft, welcher dann die Daten übergeben werden, und diese übergibt diese dann dem success-Callback. Kurz: es wird kein XMLHttpRequest verwendet, und nur mit diesem kannst du einen Nutzernamen und ein Kennwort übergeben.

PS: Eine Lösung wäre, dass du auf deinem Server ein serverseitig ausführbares Skript erstellst, welches du mit JavaScript aufrufst, und welches dann auf den fremden Server zugreifst. Somit kannst du JSON nutzen, XMLHttpRequest und du kannst einen Nutzernamen samt Kennwort übergeben.
 
Hi,

eine weitere Möglichkeit das Cross-Domain-Scripting und JSONP zu vermeiden, wäre die Einrichtung eines Forward Proxy auf deinem Server.

Bei einem Apache Server würde das mit mod_proxy so aussehen:

Code:
<IfModule proxy_http_module>
  ProxyPass /service http://<third-party-provider-address>/service
</IfModule>

Nun kannst du alle Anfragen die für den Drittanbieter gedacht sind an deinen eigenen Server senden, welcher diese an den Drittanbieter Server weiterleitet.

Grüße
Manuel
 

Neue Beiträge

Zurück