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

Nginx跨域問題解析與解決

 更新時間:2022年08月03日 14:40:44   作者:極客飛兔  
本地運行一個項目,要訪問外域的api接口,存在跨域問題,下面這篇文章主要給大家介紹了關(guān)于如何使用Nginx解決跨域問題的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考下

什么是跨域

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

跨域場景

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

當前url請求url是否跨域原因
http://www.autofelix.cnhttp://www.autofelix.cn/api.php協(xié)議/域名/端口都相同
http://www.autofelix.cnhttps://www.autofelix.cn/api.php協(xié)議不同
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 反向代理實現(xiàn)跨域,是最簡單的跨域方式
  • 只需要修改 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 請求
  • 原理時網(wǎng)頁通過添加一個 <script> 元素,向服務器請求 json 數(shù)據(jù),服務器收到請求后,將數(shù)據(jù)放在一個指定名字的回調(diào)函數(shù)的參數(shù)位置傳回來
//jquery實現(xiàn)
<script>
$.getJSON('http://autofelix.com/api.php&callback=?', function(res) {
     // 處理獲得的數(shù)據(jù)
     console.log(res)
});
</script>
  • 后端語言代理
  • 可以通過一種沒有跨域限制的語言中轉(zhuǎn)一下,通過后端語言去請求資源,然后再返回數(shù)據(jù)
  • 比如 http://www.autofelix.cn 需要調(diào)用 http://api.autofelix.cn/userinfo 去獲取用戶數(shù)據(jù),因為子域名不同,會有跨域限制
  • 可以先請求 http://www.autofelix.cn 下的 php 文件,比如 http://www.autofelix.cn/api.php,然后再通過該 php 文件返回數(shù)據(jù)
// 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 數(shù)組內(nèi)的 域名跨域訪問
    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');
}

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

相關(guān)文章

  • Nginx報:Nginx?-?504?Gateway?Time-out問題解決辦法

    Nginx報:Nginx?-?504?Gateway?Time-out問題解決辦法

    這篇文章主要給大家介紹了關(guān)于Nginx報:Nginx?-?504?Gateway?Time-out問題的解決辦法,一般是由于程序執(zhí)行時間過長導致響應超時,例如程序需要執(zhí)行90秒,而nginx最大響應等待時間為30秒,這樣就會出現(xiàn)超時,需要的朋友可以參考下
    2024-01-01
  • LNMPA遇到504 Gateway time-out錯誤的解決方法

    LNMPA遇到504 Gateway time-out錯誤的解決方法

    這篇文章主要介紹了LNMPA遇到504 Gateway time-out錯誤的解決方法,需要的朋友可以參考下
    2017-07-07
  • nginx+lua單機上萬并發(fā)的實現(xiàn)

    nginx+lua單機上萬并發(fā)的實現(xiàn)

    nginx是我們最常用的服務器,常用于做內(nèi)容分發(fā)和反向代理,本文主要介紹了nginx+lua單機上萬并發(fā)的實現(xiàn),有興趣的可以了解下
    2021-05-05
  • 關(guān)于Nginx中虛擬主機的一些冷門知識小結(jié)

    關(guān)于Nginx中虛擬主機的一些冷門知識小結(jié)

    這篇文章主要給大家介紹了關(guān)于Nginx中虛擬主機的一些冷門知識,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • 本地通過nginx配置反向代理的全過程記錄

    本地通過nginx配置反向代理的全過程記錄

    這篇文章主要給大家介紹了關(guān)于本地通過nginx配置反向代理的全過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Nginx Rewrite規(guī)則與使用介紹和技巧實例

    Nginx Rewrite規(guī)則與使用介紹和技巧實例

    這篇文章主要介紹了Nginx Rewrite規(guī)則與使用介紹和技巧實例,本文講解了正則表達式匹配、文件及目錄匹配、flag標記、Nginx Rewrite相關(guān)指令等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Nginx 出現(xiàn) 403 Forbidden 最終解決方法

    Nginx 出現(xiàn) 403 Forbidden 最終解決方法

    這篇文章給大家介紹了Nginx 出現(xiàn) 403 Forbidden 最終解決方法,下面分步驟給大家介紹的非常詳細,感興趣的的朋友一起看看吧
    2017-08-08
  • nginx下gzip配置參數(shù)詳解

    nginx下gzip配置參數(shù)詳解

    這篇文章主要介紹了nginx下gzip配置參數(shù)詳解,本文同時給出了配置例子,以及一些注意事項,需要的朋友可以參考下
    2014-08-08
  • Nginx圖片服務器配置之后圖片訪問404的問題解決

    Nginx圖片服務器配置之后圖片訪問404的問題解決

    本文主要介紹了Nginx圖片服務器配置之后圖片訪問404的問題解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Nginx靜態(tài)資源防盜鏈配置詳解

    Nginx靜態(tài)資源防盜鏈配置詳解

    這篇文章主要為大家介紹了Nginx靜態(tài)資源防盜鏈如何配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論