Javascript-forum
Cors - Druckversion

+- Javascript-forum (https://javascript-forum.de)
+-- Forum: Entwicklung (https://javascript-forum.de/forumdisplay.php?fid=4)
+--- Forum: Javascript (https://javascript-forum.de/forumdisplay.php?fid=6)
+--- Thema: Cors (/showthread.php?tid=744)



Cors - sfthbara - 24.05.2022

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.

Code:
<!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>



RE: Cors - admin - 24.05.2022

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 ?


RE: Cors - sfthbara - 24.05.2022

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

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

Code:
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.?


RE: Cors - admin - 29.05.2022

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


RE: Cors - admin - 29.05.2022

Mit PHP würde es z. B. so laufen
PHP-Code:
<?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


RE: Cors - admin - 29.05.2022

Mit Jquery geht es auch
Code:
$.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',
  });