Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Cors
#1
Hallo ich versuche einen Crawler zu bauen, um an die id's von z.b Städten von wikidata zu kommen. Beim fetchen der Wikidata APi bekomme ich dann aber folgenden Fehler. Wie kann ich den Fehler  umgehen. Habe schon so ein Addon für google gefunden. Aber damit geht das bei mir nicht.
Vielen dank schonmal für eure Vorschläge.


Access to fetch at 'https://www.wikidata.org/w/api.php?...itles=Dresden&props=descriptions&languages=en' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>

</body>
</html>
<script>
url = "https://www.wikidata.org/w/api.php?...itles=Dresden&props=descriptions&languages=en"
Promise.all([
fetch(url, {


}).then(response =>{

if(response.ok)
return response.json();
else
alert(response.status)
}),

]).then(res => {

output = res;
console.log(output)
})
</script>
Zitieren
#2
Wenn der Anbieter das nicht will ,und request von anderen Seiten verbietet , kannst du eigentlich nicht viel machen.
Kannst du mir mal einen link geben von wo du was haben willst .
Bitte den ganzen Link und sagen was du da brauchst.
Man kann ja noch am Browser rumspielen und sowas umgehen. Muss das aber erstmal selber testen. Falls es nicht geht kannst du es aber noch mit Php versuchen.

Was für Ids sind den das der Städte ?
Kann man die Infos nicht wo anders holen ?
Zitieren
#3
Hier der Link: https://www.wikidata.org/w/api.php?actio...nguages=en

wenn man z.B bei google wikidata und dresden eingibt erscheint oben neben den Namen die id: Q1731

https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&sites=enwiki&titles=Dresden&props=descriptions&languages=en

Liegt das eher daran, dass mein Browser die Verbindung blockt, weil ich mit einer anderen Domain verbinden möchte.?
Zitieren
#4
Das wird von den Browsern geblockt. Die Blockierung wird aufgehoben, sobald der Webseiten Betreiber das erlaubt. Der kann das auf seinen Server erlauben wer und welche Webseite da drauf zugreifen darf. Hast du es schon mal mit Php versucht
Zitieren
#5
Mit PHP würde es z. B. so laufen
<?php
$data=file_get_contents('https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&sites=enwiki&titles=Dresden&props=descriptions&languages=en');
$data_j=json_decode($data,true);
echo "Succes = ".$data_j['success']."<br>";
foreach($data_j['entities'] as $val){
    echo "Type = ".$val['type']."<br>";
    echo "Id = ".$val['id']."<br>";
    foreach($val['descriptions'] as $val1){
        echo "language = ".$val1['language']."<br>";
        echo "Value = ".$val1['value']."<br>";
    }
}
?>
´

Mit Javascript habe ich es auch noch nicht hinbekommen
Zitieren
#6
Mit Jquery geht es auch

     $.ajax({
    type:"GET",
    url:"https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&sites=enwiki&titles=Dresden&props=descriptions&languages=en",
    success: function(obj) {
      console.log(obj);
},
    dataType: 'jsonp',
  });
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste