2017-11-30 4 views
0

Ich schickte die AJAX-Anfrage unten an die MediaWiki API, und die folgende Meldung erschien in der Konsole: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://preview.cs50.io' is therefore not allowed access. Ich mache nichts ruchloses, und ich benutze die cloud9 IDE. Ich habe versucht, die headers Option zu meiner AJAX-Anfrage hinzuzufügen (ein einfaches Objekt mit einem Ursprungsschlüssel, der meine Domäne als Wert hatte), aber die API mochte das auch nicht.Ändern der Anforderungsheader, wenn AJAX-Anfrage von MediaWiki abgelehnt

Die Antworten hier zeigen an, dass der Programmierer aus Sicherheitsgründen nicht in der Lage sein sollte, einen origin Header zu setzen, was sinnvoll ist. Trotzdem brauche ich Zugriff auf die API. Habe ich einen Rückgriff?

Dies ist das erste Mal, dass ich mit der MediaWiki API und Docs gearbeitet habe.

$(document).ready(function() { 
     // future search parameter provided by user 
     var search = "french"; 
     // AJAX request options for MediaWiki API 
     var ajaxOptions = { 
      crossDomain: true, 
      dataType: "json", 
      url: "https://en.wikipedia.org/w/api.php", 
      method: "GET", 
      data: { 
       action:"query", 
       list:"search", 
       srsearch:search, 
       // titlesnippet may be more desirable, try both 
       srprop:"snippet", 
       srlimit:"50", 
       pwpprop:"title", 
       // may not be necessary given use of srlimit above, try and see 
       pwplimit:"50", 
       format:"json" 
      } 
     }; 
     // AJAX request 
     $.ajax(ajaxOptions).done(updateDOM); 

     function updateDOM (json) { 
      $("#message").html(JSON.stringify(json)); 
     } 

    }); 
+0

Versuchen Sie als JSONP-Anfrage – charlietfl

+1

https://www.html5rocks.com/en/tutorials/cors/ –

Antwort

1

Dies war einfach eine Lektion im Lesen der Dokumente näher. Die MediaWiki-Dokumentation läuft für immer weiter. Es ist leicht, sich in der API-Gesamtstruktur zu verirren, wenn Sie sich die vielen darin enthaltenen Bäume ansehen, vor allem, wenn Sie nur wenig Erfahrung mit APIs haben und/oder keine Erfahrung mit MediaWiki haben.

Wenn Sie Ihre AJAX/CORS-Anfrage in einer ähnlichen Weise wie oben beschrieben machen, fügen Sie einfach hinzu. . .

origin:"*" 

bis zum Ende des Datenobjekts innerhalb der Ajaxoptions-Objekt, und die Situation gelöst werden soll.

Verwandte Themen