Τι είναι το cross-domain; Μεταξύ τομέων, όταν το πρόγραμμα περιήγησης δεν μπορεί να εκτελέσει σενάρια από άλλους ιστότοπους. Προκαλείται από την ομόλογη πολιτική του προγράμματος περιήγησης, η οποία είναι ένας περιορισμός ασφαλείας που επιβάλλεται από το πρόγραμμα περιήγησης στο Javascrip{filter}t.
Το λεγόμενο ομόλογο σημαίνει ότι το όνομα τομέα, το πρωτόκολλο και η θύρα είναι όλα ίδια, δεν έχει σημασία αν δεν καταλαβαίνετε, δώστε ένα κάστανο:
http://www.itsvse.com/index.htmlεπικαλούμαιhttp://www.itsvse.com/server.PHP(Μη διατομεακό)
http://www.itsvse.com/index.htmlΠρόσκληση http://www.456.com/server.php (διαφορετικός πρωτεύων τομέας: itsvse/456, διατομεακός)
Η σύνδεση με υπερσύνδεσμο είναι ορατή.επικαλούμαιΗ σύνδεση με υπερσύνδεσμο είναι ορατή.(Διαφορετικός υποτομέας: abc/def, cross-domain)
http://www.itsvse.com:8080/index.html 调用 http://www.itsvse.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.itsvse.com/index.htmlΚλήση https://www.itsvse.com/server.php (διαφορετικά πρωτόκολλα: http/https, cross-domain)
Σημείωση: localhost και 127.0.0.1, ενώ και τα δύο δείχνουν σε τοπικό, είναι επίσης cross-domain.
Όταν ο περιηγητής εκτελεί το σενάριο javascrip{filter}t, θα ελέγξει σε ποια σελίδα ανήκει το σενάριο και αν δεν είναι ομόλογη σελίδα, δεν θα εκτελεστεί.
Λύση:
1, JSONP:
Δεν θα μπω σε λεπτομέρειες σχετικά με τον τρόπο χρήσης του, αλλά πρέπει να σημειωθεί ότι το JSONP υποστηρίζει μόνο αιτήματα GET, όχι αιτήματα POST.
2. Πράκτορας:
Για παράδειγμαwww.itsvse.com/index.htmlΕάν πρέπει να καλέσετε www.456.com/server.php, μπορείτε να γράψετε μια διεπαφήwww.itsvse.com/server.phpΑυτή η διεπαφή καλεί το www.456.com/server.php στο backend και λαμβάνει την τιμή επιστροφής και, στη συνέχεια, την επιστρέφει στο index.html, το οποίο είναι ένα μοτίβο διακομιστή μεσολάβησης. Ισοδυναμεί με παράκαμψη της πλευράς του προγράμματος περιήγησης, επομένως δεν υπάρχει φυσικά πρόβλημα μεταξύ τομέων.
3. Τροποποιήστε την κεφαλίδα στην πλευρά της PHP (μέθοδος XHR2)
Προσθέστε τις ακόλουθες δύο προτάσεις στο σενάριο διεπαφής PHP: header('Access-Control-Allow-Origin:*'); Να επιτρέπεται η πρόσβαση από όλες τις πηγές header('Access-Control-Allow-Method:POST,GET'); Τρόποι για να επιτρέψετε την πρόσβαση
|