Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας, αυτήν τη στιγμή εργάζομαι σε μια εφαρμογή Node.js που χρησιμοποιεί το πλαίσιο Express και αντιμετωπίζω πρόβλημα με την επίλυση ενός ζητήματος που σχετίζεται με το CORS. Έχω συμπεριλάβει ένα τμήμα του κώδικα του διακομιστή μου παρακάτω:

const express = require('express');
const cors = require('cors');
const app = express();

// CORS Configuration
app.use(cors());

// ... other middleware and routes ...

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Από την πλευρά του πελάτη, στέλνω το ακόλουθο αίτημα λήψης:

fetch('http://localhost:3000/api/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

Ωστόσο, όταν εκκινώ την εφαρμογή και προσπαθώ να υποβάλω αυτό το αίτημα, λαμβάνω το ακόλουθο σφάλμα CORS στην κονσόλα του προγράμματος περιήγησης:

Access to fetch at 'http://localhost:3000/api/data' from origin 'http://localhost:8080' 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.

Δοκίμασα πολλές ρυθμίσεις με το ενδιάμεσο λογισμικό cors, όπως τον καθορισμό ορισμένων προέλευσης με την επιλογή προέλευσης και την ενεργοποίηση των διαπιστευτηρίων με την επιλογή διαπιστευτηρίων, μετά είδα αυτό το blog για την ίδια κατάσταση, αλλά δεν μπορούσα να το καταλάβω σωστά: αλήθεια, αλλά Εξακολουθώ να βλέπω το ίδιο πρόβλημα.

Θα μπορούσε κάποιος να αξιολογήσει ευγενικά τον κώδικά μου και να προσφέρει βοήθεια για το πώς να εφαρμόσω σωστά το CORS στην εφαρμογή Node.js; Οποιαδήποτε βοήθεια θα εκτιμηθεί ιδιαίτερα.

Σας ευχαριστώ εκ των προτέρων!

Δημοσ.

Ο παρακάτω κώδικας παίζει μια χαρά (ο ίδιος με τον δικό σου είναι απλά πρόσθεσα ένα route)

const express = require('express');
const cors = require('cors');
const app = express();

// CORS Configuration
app.use(cors());

// ... other middleware and routes ...
app.get('/api/data', function (req, res, next) {
    res.json({msg: 'This is CORS-enabled for all origins!'})
})
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

Και με αυτήν την απλή σελίδα παίζει μια χαρά το fetch. Αν βγάλω το app.use(cors()); τότε όντως παίρνω το error που λες.

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
    fetch('http://localhost:3000/api/data')
        .then(response => response.json())
        .then(data => console.log(data))
        .catch(error => console.error('Error:', error));
</script>
</body>
</html>

Με την built in fetch παίζεις στο frontend? Τι node version έχεις (τρέξε στο terminal "node -v"); Το παραπάνω παίζει μια χαρά σε node 18.

Όταν κάνεις αλλαγές στο backend ξανατρέχεις τον server (ή έστω έχεις nodemon);
Κάτι έχεις παραλείψει να μας πεις.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...