it-swarm.com.de

Cross Origin Block Request [CORS] -Fehler erhalten, wenn .getJSON verwendet wird, um Play Store App-Details abzurufen

Im Grunde habe ich die 42matters.com APP Market API verwendet, um die App-Details oder Informationen aus dem Google Play Store zu erhalten. Alles funktionierte gut und ich erhielt die JSON-Antwort zurück. Als ich jedoch nach Wochenenden wieder ins Büro kam, war dies eher der Fall Ein seltsamer Fehler kam und es wurde nichts zurückgegeben.

Ich habe die $ .getJSON-Funktion wie folgt verwendet:

var packageID = 'com.whatsapp';
   $.getJSON('https://42matters.com/api/1/apps/lookup.json?p='+packageID+'&access_token=accesstoken1234')
.done(function(appDetails) {
            $('#logo').html(JSON.stringify(appDetails));
        });

Wie bereits erwähnt, gab ich die Daten zurück und ich konnte alles entsprechend ändern, aber jetzt gibt es diesen Fehler ohne Grund

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://42matters.com/api/1/apps/lookup.json?p=com.whatsapp&access_token=accesstoken1234. This can be fixed by moving the resource to the same domain or enabling CORS

ich habe den CORS mit PHP aktiviert, und es ist nichts passiert. Ich habe versucht, die Conf-Datei von Apache zu ändern, um CORS dort zu aktivieren, aber der Dienst wird nicht neu gestartet, daher bin ich festgefahren.

Eine weitere Sache: Wenn ich den obigen Link manuell in den Browser eingebe, wird das gewünschte Ergebnis erzielt. Bitte hilf mir, es zu lösen

7
Hunain Usman

CORS ist auf der Browserseite gesperrt, sodass AJAX keine Daten von einer anderen Domäne anfordern kann. Sie sollten sich mit dem 42matters.com-Team in Verbindung setzen, um die crossdomain.xml für Sie so zu öffnen. CORS jQuery AJAX request oder Kann jemand eine wohlgeformte crossdomain.xml-Probe posten?

Oder die Problemumgehung für AJAX ist domänenübergreifend JSONP: jQuery AJAX - domänenübergreifend , aber die API sollte diese Art von Anforderung unterstützen.

Das Letzte ist, dass Sie nicht mit AJAX Daten von anderen Quellen sammeln. Wenn es sich um eine mobile Plattform handelt, sollte das native HTTP-Request-Objekt dazu vorhanden sein

8
imkrisna

Ich weiß, es ist alte Technologie, aber einige von uns müssen sich noch damit beschäftigen.

Wenn Sie mit einem IIS6-Webserver zu tun haben:

  • Öffnen Sie den IIS-Manager (Internet Information Service)
  • Klicken Sie mit der rechten Maustaste auf die Site, für die Sie CORS aktivieren möchten, und wechseln Sie zu Eigenschaften
  • Wechseln Sie zur Registerkarte HTTP-Header
  • Klicken Sie im Abschnitt Benutzerdefinierte HTTP-Header auf Hinzufügen
  • Geben Sie als Headername den Namen Access-Control-Allow-Origin ein
  • Geben Sie * als Kopfwert ein
  • Klicken Sie zweimal auf Ok

IIS7 - Fügen Sie dies Ihrer web.config hinzu

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>
5
Diego Sagrera

Wir können das Problem beheben, indem Sie das Basis-Tag in unsere HTML-Datei einfügen.

<head>
<base href="http://www.otherdomain.com/xyz/">
</head>
0
Devendra Patel