最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx跨域問題解析與解決

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

什么是跨域

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

跨域場(chǎng)景

場(chǎng)景的跨域場(chǎng)景有哪些,請(qǐng)參考下表

當(dāng)前url請(qǐng)求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 反向代理實(shí)現(xiàn)跨域,是最簡(jiǎn)單的跨域方式
  • 只需要修改 nginx 的配置即可解決跨域問題,支持所有瀏覽器,支持session,不需要修改任何代碼,并且不會(huì)影響服務(wù)器性能
// 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;
        # 當(dāng)用webpack-dev-server等中間件代理接口訪問nignx時(shí),此時(shí)無瀏覽器參與,故沒有同源限制,下面的跨域配置可不啟用
        add_header Access-Control-Allow-Origin http://www.domain1.com;  #當(dāng)前端只跨域不帶cookie時(shí),可為*
        add_header Access-Control-Allow-Credentials true;
    }
}

jsonp請(qǐng)求

  • jsonp 是服務(wù)器與客戶端跨源通信的常用方法。最大特點(diǎn)就是簡(jiǎn)單適用,兼容性好 兼容低版本IE,缺點(diǎn)是只支持 get 請(qǐng)求,不支持 post 請(qǐng)求
  • 原理時(shí)網(wǎng)頁通過添加一個(gè) <script> 元素,向服務(wù)器請(qǐng)求 json 數(shù)據(jù),服務(wù)器收到請(qǐng)求后,將數(shù)據(jù)放在一個(gè)指定名字的回調(diào)函數(shù)的參數(shù)位置傳回來
//jquery實(shí)現(xiàn)
<script>
$.getJSON('http://autofelix.com/api.php&callback=?', function(res) {
     // 處理獲得的數(shù)據(jù)
     console.log(res)
});
</script>
  • 后端語言代理
  • 可以通過一種沒有跨域限制的語言中轉(zhuǎn)一下,通過后端語言去請(qǐng)求資源,然后再返回?cái)?shù)據(jù)
  • 比如 http://www.autofelix.cn 需要調(diào)用 http://api.autofelix.cn/userinfo 去獲取用戶數(shù)據(jù),因?yàn)樽佑蛎煌瑫?huì)有跨域限制
  • 可以先請(qǐng)求 http://www.autofelix.cn 下的 php 文件,比如 http://www.autofelix.cn/api.php,然后再通過該 php 文件返回?cái)?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;
  • 后端語言的設(shè)置
  • 主要通過后端語言主動(dòng)設(shè)置跨域請(qǐng)求,這里以 php 作為案例
// 允許所有域名訪問
header('Access-Control-Allow-Origin: *');
// 允許單個(gè)域名訪問
header('Access-Control-Allow-Origin: https://autofelix.com');
// 允許多個(gè)自定義域名訪問
static public $originarr = [
   'https://autofelix.com',
   'https://baidu.com',
   'https://csdn.net',
];
// 獲取當(dāng)前跨域域名
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
if (in_array($origin, self::$originarr)) {
    // 允許 $originarr 數(shù)組內(nèi)的 域名跨域訪問
    header('Access-Control-Allow-Origin:' . $origin);
    // 響應(yīng)類型
    header('Access-Control-Allow-Methods:POST,GET');
    // 帶 cookie 的跨域訪問
    header('Access-Control-Allow-Credentials: true');
    // 響應(yīng)頭設(shè)置
    header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');
}

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

相關(guān)文章

  • Nginx日志輸出配置json格式

    Nginx日志輸出配置json格式

    本文主要介紹了Nginx日志輸出配置json格式,包含log_format和access_log兩種命令,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • nginx訪問日志并刪除指定天數(shù)前的日志記錄配置方法

    nginx訪問日志并刪除指定天數(shù)前的日志記錄配置方法

    這篇文章主要介紹了nginx訪問日志并刪除指定天數(shù)前的日志記錄配置方法,需要的朋友可以參考下
    2014-03-03
  • WordPress中開啟多站點(diǎn)支持及Nginx的重寫規(guī)則配置

    WordPress中開啟多站點(diǎn)支持及Nginx的重寫規(guī)則配置

    這篇文章主要介紹了WordPress中開啟多站點(diǎn)支持及Nginx的重寫規(guī)則配置方法,在同一個(gè)WordPress軟件中開啟的多個(gè)站點(diǎn)如果需要綁定不同域名的話也可以使用WordPress MU Domain Mapping插件,需要的朋友可以參考下
    2016-03-03
  • 基于Nginx禁止指定IP、國外IP訪問我的網(wǎng)站

    基于Nginx禁止指定IP、國外IP訪問我的網(wǎng)站

    這篇文章主要介紹了用Nginx禁止指定IP、國外IP訪問我的網(wǎng)站,想要實(shí)現(xiàn)這個(gè)功能方法有很多種,這里基于 Nginx 的 ngx_http_geoip2 模塊來禁止國外 IP 訪問網(wǎng)站,需要的朋友可以參考下
    2022-05-05
  • 一些優(yōu)化Nginx服務(wù)器的技巧簡(jiǎn)介

    一些優(yōu)化Nginx服務(wù)器的技巧簡(jiǎn)介

    這篇文章主要介紹了一些優(yōu)化Nginx服務(wù)器的技巧簡(jiǎn)介,包括對(duì)HTTP模塊和Events模塊的配置建議,需要的朋友可以參考下
    2015-06-06
  • Nginx rewrite和proxy_pass的區(qū)別及說明

    Nginx rewrite和proxy_pass的區(qū)別及說明

    這篇文章主要介紹了Nginx rewrite和proxy_pass的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx配置proxy_pass后返回404的問題及解決

    Nginx配置proxy_pass后返回404的問題及解決

    這篇文章主要介紹了Nginx配置proxy_pass后返回404的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx+Tomcat群集的實(shí)現(xiàn)示例

    Nginx+Tomcat群集的實(shí)現(xiàn)示例

    這篇文章主要介紹了Nginx+Tomcat群集的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • nginx:413 Request Entity Too Large的處理辦法--修改 PHP上傳文件大小

    nginx:413 Request Entity Too Large的處理辦法--修改 PHP上傳文件大小

    在用 phpMyAdmin 進(jìn)行 sql 數(shù)據(jù)庫導(dǎo)入的時(shí)候,經(jīng)常需要上傳比較大的 sql 數(shù)據(jù)文件,而這時(shí)會(huì)常碰見 nginx報(bào)錯(cuò):413 Request Entity Too Large。解決此問題,根據(jù)上傳數(shù)據(jù)文件的大小進(jìn)行修改處理
    2014-06-06
  • 利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器

    利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器

    本文主要介紹了利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論

定西市| 武陟县| 大渡口区| 巫山县| 凤冈县| 舞阳县| 通海县| 葵青区| 旺苍县| 海伦市| 平邑县| 松溪县| 宝山区| 方正县| 章丘市| 东阿县| 砀山县| 阿克| 萨迦县| 汉源县| 南木林县| 新安县| 昔阳县| 古交市| 哈密市| 西安市| 胶州市| 呼图壁县| 渝中区| 孝昌县| 平湖市| 漠河县| 广南县| 福建省| 志丹县| 溆浦县| 绿春县| 黔东| 肇源县| 乐亭县| 微山县|