徹底解決前端開發在前後端分離過程中的跨域問題

2021-08-27 18:27:03 字數 1330 閱讀 9483

就是在當前網域名稱下去訪問其他網域名稱的位址,這就是跨域。

由於瀏覽器本身的同源機制,為了安全,不允許本網域名稱下去訪問其他網域名稱的指令碼。所以有了跨域問題,那怎麼解決跨域問題呢?

加入herder   jsonp   **

直接在伺服器端宣告,允許訪問某個指定的網域名稱,比如php在頭部加上

1.1允許單個網域名稱訪問

指定某網域名稱(跨域訪問

header('access-control-allow-origin:');
2.2允許多個網域名稱訪問

指定多個網域名稱(等)跨域訪問,則只需在檔案頭部新增如下**:
$origin = isset($_server['http_origin'])? $_server['http_origin'] : '';

$allow_origin = array(

'',''

);if(in_array($origin, $allow_origin))

2.3允許所有網域名稱訪問

允許所有網域名稱訪問則只需在檔案頭部新增如下**:

header('access-control-allow-origin:*');
這就是宣告允許所有網域名稱來訪問,*就是代表所有網域名稱,當然可以把*換為具體指定的網域名稱比如http://localhost/test.php這樣就可以訪問到該網域名稱。

**訪問其實在實際應用中有很多場景,在跨域中應用的原理做法為:通過反向**伺服器監聽同埠,同網域名稱的訪問,不同路徑對映到不同的位址,比如,在nginx伺服器中,監聽同乙個網域名稱和埠,不同路徑**到客戶端和伺服器,把不同埠和網域名稱的限制通過反向**,來解決跨域的問題,案例如下:

server 

location /apis

}

jsonp是解決跨域問題的常用辦法。在客戶端傳送ajax請求時,宣告資料型別和jsonp這樣就可以訪問。同時在伺服器端返回的時候要加上json jsoncallback這樣也可以解決跨域問題。

php**

echo $_get['jsoncallback'] . "(".json_encode($row).")";
前端**

$.ajax(,

error:function(result)

});

徹底解決 OBJC CLASS

最近在使用靜態庫時,總是出現這個問題。下面總結一下我得解決方法 1.m檔案沒有匯入 在build phases裡的compile sources 中新增報錯的檔案 2.framework檔案沒有匯入 靜態庫編譯時往往需要一些庫的支援,檢視你是否有沒有匯入的庫檔案 同樣是在build phases裡的...

徹底解決INSTALL FAILED UPDATE

按ctrl c退出系統,利用adb pull data system packages.xml命令將packages.xml放到你pc機本地,然後找到你需要的包名,刪除到的一段資料。例如 儲存packages.xml,然後adb push packages.xml data system將packa...

徹底解決 OBJC CLASS

1.m檔案沒有匯入 在build phases裡的compile sources 中新增報錯的檔案 2.framework檔案沒有匯入 靜態庫編譯時往往需要一些庫的支援,檢視你是否有沒有匯入的庫檔案 同樣是在build phases裡的link binary with libraries中新增 3....