如何利用PHP?快速解決跨域問題
跨域介紹
瀏覽器擁有同源策略限制確保安全,同源策略會阻止一個域的Javascript腳本和另外一個域的內(nèi)容進行交互。
當一個請求url的協(xié)議、域名(包括多級域名)、端口三者之間任意一個與當前頁面url不同即為跨域。
跨域介紹
- 1)無法讀取非同源網(wǎng)頁的 Cookie、LocalStorage 和 IndexedDB
- 2)無法接觸非同源網(wǎng)頁的 DOM 節(jié)點
- 3)無法向非同源地址發(fā)送 AJAX 請求
跨域解決方案
1)JSONP(只支持GET請求)
Javascript:
<script src="http://test.com/data.php?callback=dosomething"></script> // 向服務器test.com發(fā)出請求,該請求的查詢字符串有一個callback參數(shù),用來指定回調(diào)函數(shù)的名字 // 處理服務器返回回調(diào)函數(shù)的數(shù)據(jù) <script type="text/javascript"> function dosomething(res){ // 處理獲得的數(shù)據(jù) console.log(res.data) } </script>
data.php:
header('Content-type: application/json'); //獲取回調(diào)函數(shù)名 $jsoncallback = htmlspecialchars($_REQUEST ['callback']); //json數(shù)據(jù) $json_data = '["customername1","customername2"]'; //輸出jsonp格式的數(shù)據(jù) echo $jsoncallback . "(" . $json_data . ")";
2)CORS 跨域資源分享(Cross-Origin Resource Sharing)
- 1、普通跨域請求:只需服務器端設(shè)置 Access-Control-Allow-Origin
- 2、帶cookie跨域請求:前后端都需要進行設(shè)置
PHP:
header("Access-Control-Allow-Origin:*");
或者 Nginx:
location ~ .*\.php$ { add_header 'Access-Control-Allow-Origin' '*'; # 就加這句就行 include fcgi.conf; fastcgi_pass 127.0.0.1:10080; fastcgi_index index.php; expires off; }
Javascript:
$.ajax({ url: 'http://www.test.com:8080/login', type: 'get', data: {}, xhrFields: { withCredentials: true // 前端設(shè)置是否帶cookie }, crossDomain: true, // 會讓請求頭中包含跨域的額外信息,但不會含cookie });
3)WebSocket 瀏覽器與服務器的全雙工通信,同時也是跨域的一種解決方案
4)Nginx 反向代理
server { # nginx監(jiān)聽所有 test.com:9000 端口收到的請求 listen 9000; server_name test.com; # test.com:9000 會被轉(zhuǎn)發(fā)到 192.168.25.20:9000 location / { proxy_pass http://192.168.25.20:9000; } # test.com:9000/api/ 會被轉(zhuǎn)發(fā)到 "192.168.25.20:9000/api/" location /api/ { proxy_pass http://192.168.25.20:9000; } }
到此這篇關(guān)于如何利用PHP 快速解決跨域問題的文章就介紹到這了,更多相關(guān)PHP 跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP自定義函數(shù)實現(xiàn)數(shù)組比較功能示例
這篇文章主要介紹了PHP自定義函數(shù)實現(xiàn)數(shù)組比較功能,涉及php針對數(shù)組的遍歷、比較、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10在PHP中利用wsdl創(chuàng)建標準webservice的實現(xiàn)代碼
網(wǎng)上有現(xiàn)成的nusoap,我沒使用,如果使用了,我可能就不知道PHP是怎么創(chuàng)建webservice的了2011-12-12Windows下wamp php單元測試工具PHPUnit安裝及生成日志文件配置方法
這篇文章主要介紹了Windows下wamp php單元測試工具PHPUnit安裝及生成日志文件配置方法,簡明扼要的分析了Windows環(huán)境下wamp中php單元測試工具PHPUnit的安裝步驟、操作注意事項以及生成日志文件配置方法,需要的朋友可以參考下2018-05-05PHP header()函數(shù)常用方法總結(jié)
這篇文章主要介紹了PHP header()函數(shù)常用方法.總結(jié)了常見的用法,需要的朋友可以參考下2014-04-04PHP自定義圖片縮放函數(shù)實現(xiàn)等比例不失真縮放的方法
這篇文章主要介紹了PHP自定義圖片縮放函數(shù)實現(xiàn)等比例不失真縮放的方法,結(jié)合實例形式分析了php圖片縮放函數(shù)的功能實現(xiàn)與使用技巧,需要的朋友可以參考下2016-08-08