Lanike71 Δημοσ. 10 Ιανουαρίου 2021 Δημοσ. 10 Ιανουαρίου 2021 Καλησπέρα, δοκίμασα να κατεβάσω ένα json από σελίδα και μου πέταξε το εξής σφάλμα: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin Αν κατάλαβα καλά, είναι ζήτημα αν η σελίδα που κατέχει το json το δίνει σε άλλο σέρβερ ή όχι. Δεδομένου όμως ότι το ίδιο json το κατέβασα εύκολα με java και χωρίς κάποιο περιορισμό, τι μπορώ να κάνω; Δοκίμασα και κάτι περίεργες λύσεις όπως μέσω proxy, αλλά και πάλι δε δούλεψε. https://stackoverflow.com/questions/10636611/how-does-access-control-allow-origin-header-work
k33theod Δημοσ. 11 Ιανουαρίου 2021 Δημοσ. 11 Ιανουαρίου 2021 Μία λύση που έχω εφαρμόσει και εγώ είναι να το πάρεις με το backend και να το ζητάς μετά από το δικό σου server Δηλαδή αντί js->json_url κάνεις js->my_server->json_url Αν χρειάζεσαι παράδειγμα σε php ή WP πες μου.
Lanike71 Δημοσ. 12 Ιανουαρίου 2021 Μέλος Δημοσ. 12 Ιανουαρίου 2021 17 ώρες πριν, k33theod είπε Μία λύση που έχω εφαρμόσει και εγώ είναι να το πάρεις με το backend και να το ζητάς μετά από το δικό σου server Δηλαδή αντί js->json_url κάνεις js->my_server->json_url Αν χρειάζεσαι παράδειγμα σε php ή WP πες μου. Ναι αυτή τη λύση σκέφτηκα κι εγώ, αφού δε βρίσκω άκρη. Αν έχεις λινκ με παράδειγμα, θα με διευκόλυνε, ευχαριστώ.
k33theod Δημοσ. 12 Ιανουαρίου 2021 Δημοσ. 12 Ιανουαρίου 2021 (επεξεργασμένο) Δεν είναι link είναι κώδικας που έχω χρησιμοποιήσει στέλνει json λαμβάνει json js fetch('./file_on_myserver.php', { method: 'POST', // or 'PUT' headers: { "Content-Type":"application/json" }, body: JSON.stringify(My_data),//To My_data είναι έγγυρο json που το κάνεις εσύ στο Front }) .then((response) => response.json()) .then((data) => { //use of data }) .catch(err => console.log(err));//error handler eg php στο σερβερ <?php $ch = curl_init("http://v22019068494590849.quicksrv.de:7380");//To service curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));//xreiazetai curl_setopt($ch, CURLOPT_POSTFIELDS,file_get_contents('php://input')); //to json apo to fetch js curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); xreiazetai $result = curl_exec($ch); echo $result; curl_close ( $ch ); Επεξ/σία 12 Ιανουαρίου 2021 από k33theod
Lanike71 Δημοσ. 13 Ιανουαρίου 2021 Μέλος Δημοσ. 13 Ιανουαρίου 2021 Δεν ξέρω αν το είπα σωστά, αλλά θέλω το εξής: Να κατεβάζω ένα json από μία σελίδα. Ενώ σε java δε δημιούργησε πρόβλημα, η js δεν τα καταφέρνει, πετάει μήνυμα στην κονσόλα: "Αιτία: η κεφαλίδα ‘Access-Control-Allow-Origin’ του CORS απουσιάζει". Δοκίμασα με ajax, άλλαξα και τον τύπο σε jsonp αλλά πάλι τίποτα. Δοκίμασα και με fetch και πάλι τα ίδια...
k33theod Δημοσ. 13 Ιανουαρίου 2021 Δημοσ. 13 Ιανουαρίου 2021 (επεξεργασμένο) αυτό το κατάλαβα. Τι τρέχει στο backend java? Τι request είναι get? Επεξ/σία 13 Ιανουαρίου 2021 από k33theod
k33theod Δημοσ. 13 Ιανουαρίου 2021 Δημοσ. 13 Ιανουαρίου 2021 html Αυτό είναι πλήρες. Δυστηχώς δεν μπορώ να ανεβάσω κώδικα γιατί με blockarei Η ουσία είναι δεν κάνω XHR request στον opap γιατί ο browser δεν το επιτρέπει λόγω CORS. Κάνω λοιπόν το request στον server μου. O server μου κάνει request στον οπαπ κάνένα πρόβλημα με CORS γιατί δεν τρέχει στον browser.
Lanike71 Δημοσ. 14 Ιανουαρίου 2021 Μέλος Δημοσ. 14 Ιανουαρίου 2021 Δεν την καταλαβαίνω και τόσο τη λογική του όλου, αλλά αφού δουλεύει, ευχαριστώ. Δηλαδή στην ουσία με js εκτελείς την php που είναι στο σέρβερ σου και το επιτρέπει επειδή απλά δεν τρέχει στο browser; Νομίζω και το λνκ που παρέθεσα, την ίδια λογική είχε η λύση https://stackoverflow.com/questions/10636611/how-does-access-control-allow-origin-header-work που χτυπούσες μέσω του https://cors-anywhere.herokuapp.com/ το λινκ που ήθελες αλλά και πάλι δε δούλευε.
k33theod Δημοσ. 14 Ιανουαρίου 2021 Δημοσ. 14 Ιανουαρίου 2021 Η λογική είναι η εξής. Έχω ένα browser που δεν επιτρέπει cross origin request. For security reasons, browsers restrict cross-origin HTTP requests initiated from scripts. For example, XMLHttpRequest and the Fetch API follow the same-origin policy. This means that a web application using those APIs can only request resources from the same origin the application was loaded from unless the response from other origins includes the right CORS headers. Οκ δεν μπορώ να πάρω τα data που θέλω με τον browser. Μήπως μπορώ κάπως αλλιώς. Ναι μπορώ με java όπως ανέφερες. Ζητάω λοιπόν τα data που θέλω με τον browser από την java. H java παίρνει το request από τον browser το στέλνει στη δική της γλώσσα στο api του opap και όταν έρχεται η απάντηση τη στέλνει πίσω στον browser. Είναι δηλαδή ο ενδοιάμεσως γιατί δεν επιτρέπεται επικοινωνία μεταξύ browser opap. Δεν ξέρω αν μπορώ να το πω πιό απλά. Κάποια πράγματα που γράφονται στην ερώτηση του link όπως The response header of MyCode.js contains Access-Control-Allow-Origin: http://siteB, which I thought meant that MyCode.js was allowed to make cross-origin references to the site B. δεν βγάζουν κανένα νόημα οπότε δεν ξέρω τι ακριβώς γράφουν Η απάντηση φένεται σωστή δεν δείχνει όμως λύση που σου έγραψα.
Lanike71 Δημοσ. 14 Ιανουαρίου 2021 Μέλος Δημοσ. 14 Ιανουαρίου 2021 Κατανοητό, ευχαριστώ πολύ για την επεξήγηση αλλά και τη λύση.
k33theod Δημοσ. 14 Ιανουαρίου 2021 Δημοσ. 14 Ιανουαρίου 2021 (επεξεργασμένο) Σκέφτηκα τώρα ένα ισοδύναμο. Πως παίρνει το site δεδομένα από την database; Τα ζητάει από thn java sτο server. O java κάνει το query to stelnei sthn database pairnei thn apanthsi tin stelnei sto site. Και όλο αυτό γιατί ο browser δεν επιτρέπει επικοινωνία με την database Είναι ακριβώς η ίδια λογική. Επεξ/σία 14 Ιανουαρίου 2021 από k33theod 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα