亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Nginx跨域問題解析與解決

瀏覽:121日期:2023-03-13 15:37:08
目錄
  • 什么是跨域
  • 跨域場景
  • 解決跨域的四種方式

什么是跨域

  • 域: 是指瀏覽器不能執行其他網站的腳本
  • 跨域: 它是由瀏覽器的 同源策略 造成的,是瀏覽器對 JavaScript 實施的安全限制,所謂同源(即指在同一個域)就是兩個頁面具有相同的協議 protocol,主機 host 和端口號 port 則就會造成 跨域

跨域場景

場景的跨域場景有哪些,請參考下表

當前url請求url是否跨域原因http://www.autofelix.cnhttp://www.autofelix.cn/api.php協議/域名/端口都相同http://www.autofelix.cnhttps://www.autofelix.cn/api.php協議不同http://www.autofelix.cnhttp://www.rabbit.cn主域名不同http://www.autofelix.cnhttp://api.autofelix.cn子域名不同http://www.autofelix.cn:80http://www.autofelix.cn:8080端口不同

解決跨域的四種方式

  • nginx的反向代理
  • 使用 nginx 反向代理實現跨域,是最簡單的跨域方式
  • 只需要修改 nginx 的配置即可解決跨域問題,支持所有瀏覽器,支持session,不需要修改任何代碼,并且不會影響服務器性能
// nginx配置server {    listen       81;    server_name  www.domain1.com;    location / {proxy_pass   http://www.domain2.com:8080;  #反向代理proxy_cookie_domain www.domain2.com www.domain1.com; #修改cookie里域名index  index.html index.htm;# 當用webpack-dev-server等中間件代理接口訪問nignx時,此時無瀏覽器參與,故沒有同源限制,下面的跨域配置可不啟用add_header Access-Control-Allow-Origin http://www.domain1.com;  #當前端只跨域不帶cookie時,可為*add_header Access-Control-Allow-Credentials true;    }}

jsonp請求

  • jsonp 是服務器與客戶端跨源通信的常用方法。最大特點就是簡單適用,兼容性好 兼容低版本IE,缺點是只支持 get 請求,不支持 post 請求
  • 原理時網頁通過添加一個 <script> 元素,向服務器請求 json 數據,服務器收到請求后,將數據放在一個指定名字的回調函數的參數位置傳回來
//jquery實現<script>$.getJSON("http://autofelix.com/api.php&callback=?", function(res) {     // 處理獲得的數據     console.log(res)});</script>
  • 后端語言代理
  • 可以通過一種沒有跨域限制的語言中轉一下,通過后端語言去請求資源,然后再返回數據
  • 比如 http://www.autofelix.cn 需要調用 http://api.autofelix.cn/userinfo 去獲取用戶數據,因為子域名不同,會有跨域限制
  • 可以先請求 http://www.autofelix.cn 下的 php 文件,比如 http://www.autofelix.cn/api.php,然后再通過該 php 文件返回數據
// api.php 文件中的代碼public function getCurl($url, $timeout = 5){    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);    $result = curl_exec($ch);    curl_close($ch);    return $result;}$result = getCurl("http://api.autofelix.cn/userinfo");return $result;
  • 后端語言的設置
  • 主要通過后端語言主動設置跨域請求,這里以 php 作為案例
// 允許所有域名訪問header("Access-Control-Allow-Origin: *");// 允許單個域名訪問header("Access-Control-Allow-Origin: https://autofelix.com");// 允許多個自定義域名訪問static public $originarr = [   "https://autofelix.com",   "https://baidu.com",   "https://csdn.net",];// 獲取當前跨域域名$origin = isset($_SERVER["HTTP_ORIGIN"]) ? $_SERVER["HTTP_ORIGIN"] : "";if (in_array($origin, self::$originarr)) {    // 允許 $originarr 數組內的 域名跨域訪問    header("Access-Control-Allow-Origin:" . $origin);    // 響應類型    header("Access-Control-Allow-Methods:POST,GET");    // 帶 cookie 的跨域訪問    header("Access-Control-Allow-Credentials: true");    // 響應頭設置    header("Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token");}

到此這篇關于Nginx跨域問題解析與解決的文章就介紹到這了,更多相關Nginx跨域內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Nginx
主站蜘蛛池模板: 不卡视频免费在线观看 | 国产福利一区视频 | 黄色仓库在线观看 | 免费啪啪小视频 | 一级 黄 色 毛片 | 中文国产成人精品久久一 | 国产91精品在线观看 | 国模精品视频一区二区三区 | 福利一二三区 | 欧美精品大片 | 在线永久免费观看的a站视频 | 综合久久婷婷 | 五月婷婷俺也去开心 | 521色香蕉网在线观看免费 | 成人性生活视频 | 一区二区在线视频免费观看 | 国产在线精品成人一区二区三区 | 看黄网址在线观看 | 久久99精品久久久久久久不卡 | 欧美日韩在线视频专区免费 | 亚洲欧美日韩中文字幕在线不卡 | 91福利国产在线观看一区二区 | 国产免费不卡v片在线观看 国产免费不卡视频 | 免费看一级特黄a大片 | 黄页视频在线观看免费 | 未满十八18周岁禁止免费国产 | 国产成人综合日韩精品婷婷九月 | 国偷盗摄自产福利一区在线 | 亚洲国产精品综合久久网络 | 爱爱视频在线播放 | 国产亚洲3p一区二区三区 | 网友自拍一区 | 亚洲 欧美 国产 日韩 制服 bt | 国产亚洲一区二区三区在线 | 国产大片黄在线播放 | 亚洲欧美v | 国产成人精品女人不卡在线 | 性做久久久久久久久男女 | 亚洲欧美综合 | 国产91精品久久久久久 | 国产短视频精品一区二区三区 |