1. 程式人生 > >前後端分離如何處理跨域問題

前後端分離如何處理跨域問題

    跨域,指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。
    什麼情況下不是跨域?

    即:滿足域名、協議、埠均相同的即不是跨域。

例如

http://www.b.com/index.html 呼叫 http://www.b.com/server (非跨域)

http://www.bone.com/index.html 呼叫 http://www.btwo.com/server(主域名不同:one/two,跨域)

http://www.b.com:8080/index.html 呼叫 http://www.b.com:8081/server (埠不同:8080/8081,跨域)

http://www.b.com/index.html 呼叫 https://www.b.com/server (協議不同:http/https,跨域)

解決方案:

    1用nginx做web伺服器,將請求轉發,就沒有跨域的問題了

            通過反向代理伺服器監聽同埠,同域名的訪問,不同路徑對映到不同的地址,比如,在nginx伺服器中,監聽同一個域  名和埠,不同路徑轉發到客戶端和伺服器,把不同埠和域名的限制通過反向代理,來解決跨域的問題,案例如下:

server {
        listen       80;
        server_name  domain.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location /client
{ #訪問客戶端路徑 proxy_pass http://localhost:81; proxy_redirect default; } location /apis { #訪問伺服器路徑 rewrite ^/apis/(.*)$ /$1 break; proxy_pass http://localhost:82; } }

    2 CORS在後端設定響應頭,把你需要執行訪問的域名加入加入Access-Control-Allow-Origin中。

    Cross-Origin Resource Sharing (CORS) 是W3c工作草案,它定義了在跨域訪問資源時瀏覽器和伺服器之間如何通訊。CORS背後的基本思想是使用自定義的HTTP頭部允許瀏覽器和伺服器相互瞭解對方,從而決定請求或響應成功與否。

x詳細https://blog.csdn.net/liboyang71/article/details/77867239

    3jsonp把後端根據請求,構造json資料,並返回,前端用jsonp跨域。