日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 快速解决跨域问题

發布時間:2023/12/31 php 152 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 快速解决跨域问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

跨域介紹

瀏覽器擁有同源策略限制確保安全,同源策略會阻止一個域的Javascript腳本和另外一個域的內容進行交互。

當一個請求url的協議、域名(包括多級域名)、端口三者之間任意一個與當前頁面url不同即為跨域。
?

跨域限制

1)無法讀取非同源網頁的 Cookie、LocalStorage 和 IndexedDB

2)無法接觸非同源網頁的 DOM 節點

3)無法向非同源地址發送 AJAX 請求
?

跨域解決方案

1)JSONP(只支持GET請求)

Javascript:

<script src="http://test.com/data.php?callback=dosomething"></script> // 向服務器test.com發出請求,該請求的查詢字符串有一個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監聽所有 test.com:9000 端口收到的請求listen 9000;server_name test.com;# test.com:9000 會被轉發到 192.168.25.20:9000location / {proxy_pass http://192.168.25.20:9000;}# test.com:9000/api/ 會被轉發到 "192.168.25.20:9000/api/"location /api/ {proxy_pass http://192.168.25.20:9000;} }

摘自:什么是跨域?跨域解決方法_越努力,越幸運!-CSDN博客_跨域

總結

以上是生活随笔為你收集整理的PHP 快速解决跨域问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。