欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何利用PHP?快速解決跨域問題

 更新時間:2022年08月26日 14:40:54   作者:潘廣宇  
這篇文章主要介紹了如何利用PHP?快速解決跨域問題,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

跨域介紹

瀏覽器擁有同源策略限制確保安全,同源策略會阻止一個域的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)文章

最新評論