Τι είναι το Cors;
Το CORS είναι ένα πρότυπο του W3C, το οποίο σημαίνει "Κοινή χρήση πόρων μεταξύ προέλευσης". Επιτρέπει στο πρόγραμμα περιήγησης να κάνει αιτήματα XMLHttpRequest σε διακομιστές μεταξύ προελεύσεων, ξεπερνώντας έτσι τον περιορισμό ότι το AJAX μπορεί να χρησιμοποιηθεί μόνο ομοιογενώς.
1. Εισαγωγή
Το CORS απαιτεί υποστήριξη τόσο από πρόγραμμα περιήγησης όσο και από διακομιστή. Επί του παρόντος, όλα τα προγράμματα περιήγησης υποστηρίζουν αυτήν τη δυνατότητα και το πρόγραμμα περιήγησης IE δεν μπορεί να είναι χαμηλότερο από το IE10.
Ολόκληρη η διαδικασία επικοινωνίας CORS ολοκληρώνεται αυτόματα από το πρόγραμμα περιήγησης και δεν απαιτεί τη συμμετοχή του χρήστη. Για τους προγραμματιστές, η επικοινωνία CORS δεν διαφέρει από την ομόλογη επικοινωνία AJAX και ο κώδικας είναι ακριβώς ο ίδιος. Μόλις το πρόγραμμα περιήγησης διαπιστώσει ότι ένα αίτημα AJAX διασχίζει την πηγή, θα προσθέσει αυτόματα κάποιες πρόσθετες πληροφορίες κεφαλίδας και μερικές φορές ένα ακόμη επιπλέον αίτημα, αλλά ο χρήστης δεν θα το νιώσει.
Επομένως, το κλειδί για την επίτευξη επικοινωνίας CORS είναι ο διακομιστής. Εφόσον ο διακομιστής υλοποιεί τη διεπαφή CORS, μπορεί να επικοινωνεί μεταξύ των πηγών.
Στην πραγματικότητα, τα προγράμματα διακομιστή ιστού (όπως ASP.NET ή PHP κ.λπ.) δεν μπορούν να διακρίνουν και δεν θα διαχειριστούν εάν ένα εισερχόμενο αίτημα Http είναι αίτημα Ajax μεταξύ τομέων.Το CORS έχει σχεδιαστεί για να λύσει αυτό το πρόβλημα και το προσαρμοσμένο πρότυπο CORS του W3C δίνει στα προγράμματα περιήγησης έναν μηχανισμό που επιτρέπει τα αιτήματα μεταξύ τομέων Ajax.
2: Εγγενής κωδικός αιτήματος JS Ajax
Επειδή δεν θέλω να αναφερθώ στο jQuery, συνόψισα τις ακόλουθες μεθόδους με js, ως εξής:
Ο Ajax ζητά δοκιμές διεπαφής και εντοπίζει ένα σφάλμα ως εξής:
Τρία: Ορίστε μια μέθοδο ελεγκτή για να επιτρέψετε τη διατομεακή
Έτσι κι έτσιΌλα επιτρέπονταιΟ ελεγκτής ή η μέθοδος API είναι cross-domain, στο αρχείο web.configsystem.webΔιακομιστήςΚάτω από τον κόμβο προστίθεται η ακόλουθη διαμόρφωση:
Το παραπάνω δεν είναι το αποτέλεσμα που θέλαμε! Εάν θέλουμε να επιτρέψουμε μόνο σε ένα όνομα τομέα να έχει πρόσβαση σε μία από τις διεπαφές μας σε όλους τους τομείς, πρέπει να ορίσουμε ένα χαρακτηριστικό που μοιάζει με αυτό:
Ο κώδικας για τον ορισμό δικαιωμάτων πρόσβασης μεταξύ τομέων είναι αυτή η παράγραφος HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", προέλευση);
Ορίζουμε τα χαρακτηριστικά πάνω από τη μέθοδο ελεγκτή ως εξής:
Ξεκινάμε ξανά το αίτημα Ajax με το αποτέλεσμα όπως φαίνεται παρακάτω:
Οι πόροι διεπαφής API από άλλους ιστότοπούς μας είναι προσβάσιμοι με επιτυχία.
(Τέλος)
|