|
Περιγραφή προβλήματος Όταν μια κλήση μεταξύ τομέων ASP.NET MVC ή μια υπηρεσία γραμμένη ASP.NET Web API, γίνεται απρόσιτη. Μέθοδος αναπαραγωγής - Χρησιμοποιήστε ένα πρότυπο για να δημιουργήσετε ένα απλούστερο ASP.NET έργο Web API, διορθώστε το για να βεβαιωθείτε ότι λειτουργεί
- Δημιουργήστε ένα άλλο έργο με μία μόνο σελίδα HTML και πραγματοποιήστε μια κλήση AJAX
- Ανοίξτε αυτήν τη σελίδα στο πρόγραμμα περιήγησής σας και θα βρείτε το ακόλουθο σφάλμα (405: Η μέθοδος δεν επιτρέπεται)
Σημείωση: Η ίδια κατάσταση συμβαίνει σε ASP.NET MVC. Σε ορισμένες περιπτώσεις, το MVC μπορεί επίσης να χρησιμοποιηθεί απευθείας για την ανάπτυξη υπηρεσιών, κάτι που έχει τα δικά του πλεονεκτήματα και μειονεκτήματα σε σύγκριση με το WebAPI. Παρακάτω είναι ένα παράδειγμα υπηρεσίας που αναπτύχθηκε με χρήση MVC
Ανάλυση αιτίας Ο βασικός λόγος για το πρόβλημα μεταξύ τομέων είναι ότι το πρόγραμμα περιήγησης έχει χαμηλά δικαιώματα και στις δύο αιτήσεις και συνήθως επιτρέπει κλήσεις μόνο σε πόρους στον τοπικό τομέα, εκτός εάν ο διακομιστής προορισμού του πει ρητά ότι επιτρέπονται κλήσεις μεταξύ τομέων. Επομένως, αν και το πρόβλημα μεταξύ τομέων προκαλείται από τη συμπεριφορά του προγράμματος περιήγησης, η λύση βρίσκεται στην πλευρά του διακομιστή. Επειδή δεν είναι δυνατό να απαιτηθεί από όλους τους πελάτες να μειώσουν την ασφάλεια.
λύση Και για τους δύο τύπους έργων MVC και ASP.NET Web API ASP.NET, έκανα κάποια έρευνα και διαπίστωσα ότι το ακόλουθο σενάριο είναι εφικτό. Για ASP.NET MVC, χρειάζεται μόνο να προσθέσετε το ακόλουθο περιεχόμενο στο web.config
Για ASP.NET Web API, εκτός από τις παραπάνω ρυθμίσεις, χρειάζεται να προστεθεί και ένας ειδικός σχεδιασμός, ο οποίος είναι η προσθήκη μιας μεθόδου OPTIONS για κάθε API Controller, χωρίς όμως να επιστραφεί τίποτα. δημόσια συμβολοσειρά Options() { επιστροφή null; Απόκριση HTTP 200 με κενό σώμα }
Σημείωση: Αυτή η λειτουργία μπορεί επίσης να γίνει με κάποια έρευνα και ίσως είναι καλύτερο να τη σχεδιάσετε ως φίλτρο.
|