Що таке крос-домен? Крос-домен, коли браузер не може виконувати скрипти з інших сайтів. Це спричинено гомологічною політикою браузера, яка є обмеженням безпеки, накладеним браузером на Javascrip{filter}t.
Так званий гомологічний означає, що доменне ім'я, протокол і порт однакові, неважливо, якщо ви не розумієте, дайте коротку думку:
http://www.itsvse.com/index.htmlвикликатиhttp://www.itsvse.com/server.PHP(Не крос-домен)
http://www.itsvse.com/index.htmlCall http://www.456.com/server.php (різний первинний домен: itsvse/456, крос-домен)
Вхід за гіперпосиланням видно.викликатиВхід за гіперпосиланням видно.(Піддомен різний: abc/def, крос-домен)
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, крос-домен)
Зверніть увагу: localhost і 127.0.0.1, хоча обидва вказують на локальний, також є кросдоменними.
Коли браузер виконує скрипт 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 на бекенді і отримує повернене значення, а потім повертає його до index.html, який є проксі-шаблоном. Це еквівалентно обходу браузерної сторони, тому природно немає проблеми між доменами.
3. Змінити заголовок на стороні PHP (метод XHR2)
Додайте до інтерфейсного скрипта PHP наступні два речення: header('Access-Control-Allow-Origin:*'); Дозволити доступ з усіх джерел header('Access-Control-Allow-Method:POST,GET'); Способи забезпечення доступу
|