如何利用PHP?快速解決跨域問題
跨域介紹
瀏覽器擁有同源策略限制確保安全,同源策略會阻止一個域的Javascript腳本和另外一個域的內容進行交互。
當一個請求url的協(xié)議、域名(包括多級域名)、端口三者之間任意一個與當前頁面url不同即為跨域。
跨域介紹
- 1)無法讀取非同源網頁的 Cookie、LocalStorage 和 IndexedDB
- 2)無法接觸非同源網頁的 DOM 節(jié)點
- 3)無法向非同源地址發(fā)送 AJAX 請求
跨域解決方案
1)JSONP(只支持GET請求)
Javascript:
<script src="http://test.com/data.php?callback=dosomething"></script> // 向服務器test.com發(fā)出請求,該請求的查詢字符串有一個callback參數,用來指定回調函數的名字 // 處理服務器返回回調函數的數據 <script type="text/javascript"> function dosomething(res){ // 處理獲得的數據 console.log(res.data) } </script>
data.php:
header('Content-type: application/json'); //獲取回調函數名 $jsoncallback = htmlspecialchars($_REQUEST ['callback']); //json數據 $json_data = '["customername1","customername2"]'; //輸出jsonp格式的數據 echo $jsoncallback . "(" . $json_data . ")";
2)CORS 跨域資源分享(Cross-Origin Resource Sharing)
- 1、普通跨域請求:只需服務器端設置 Access-Control-Allow-Origin
- 2、帶cookie跨域請求:前后端都需要進行設置
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 // 前端設置是否帶cookie }, crossDomain: true, // 會讓請求頭中包含跨域的額外信息,但不會含cookie });
3)WebSocket 瀏覽器與服務器的全雙工通信,同時也是跨域的一種解決方案
4)Nginx 反向代理
server { # nginx監(jiān)聽所有 test.com:9000 端口收到的請求 listen 9000; server_name test.com; # test.com:9000 會被轉發(fā)到 192.168.25.20:9000 location / { proxy_pass http://192.168.25.20:9000; } # test.com:9000/api/ 會被轉發(fā)到 "192.168.25.20:9000/api/" location /api/ { proxy_pass http://192.168.25.20:9000; } }
到此這篇關于如何利用PHP 快速解決跨域問題的文章就介紹到這了,更多相關PHP 跨域內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在PHP中利用wsdl創(chuàng)建標準webservice的實現(xiàn)代碼
網上有現(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自定義圖片縮放函數實現(xiàn)等比例不失真縮放的方法
這篇文章主要介紹了PHP自定義圖片縮放函數實現(xiàn)等比例不失真縮放的方法,結合實例形式分析了php圖片縮放函數的功能實現(xiàn)與使用技巧,需要的朋友可以參考下2016-08-08