nginx實現跨域訪問

2021-07-10 21:12:02 字數 1605 閱讀 1978

簡單來說:兩個url只要協議、網域名稱、埠有任何乙個不同,都被當作是不同的域,相互訪問就會有跨域問題。

例如:在開發前後端完全分離的系統中,服務端**屬於乙個工程,前端**屬於另乙個工程,前端開發人員在進行介面對接時,可能會在webstorm等工具進行編碼,並用webstorm的內建伺服器進行除錯,這就會有跨域問題,因為,webstorm內建伺服器預設字首部分是http://localhost:63342/,而服務端介面的路徑字首部分一定不會是這樣,這樣便產生了跨域訪問的問題。

例如如下這一段**,在webstorm中除錯這個ajax所在的頁面,頁面路徑是http://localhost:63342/untitled/across-domain.html,而要訪問的介面路徑是http://localhost:8888/ssm/inte***ces/test/m006

$(function()

}]}),

success: function(data) ,

error: function(text)

})

直接訪問,開啟瀏覽器的控制台檢視,沒錯,提示的正是無法進行跨域訪問。

1、要解決這個問題很簡單,只要使頁面的字首和介面的字首一致就可以了,因此可以使用nginx進行反向**。開啟nginx目錄下的conf資料夾,在nginx.conf檔案的配置如下

#預設監聽80埠,ip後面不加埠號預設就是80

listen 80;

#伺服器位址

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

#專案根目錄,一般就是啟動頁

location /

#作用:訪問的http://localhost/ssm/inte***ces/相當於乙個**url,實際訪問的

是http://localhost:8888/ssm/inte***ces/

location /ssm/inte***ces/

2、配置完畢,將ajax中的介面路徑改為http://localhost/ssm/inte***ces/test/m006,將ngnix啟動起來,在任務管理器中是否有nginx程序,有的話說明啟動成功,如果沒有,可以檢視nginx目錄下log資料夾中的error.log,看**有問題進行修改,啟動成功後,在瀏覽器位址列直接訪問localhost,這次結果就正確了。

這次的請求其實是走了nginx**伺服器的

nginx的實際原理就是配置乙個**路徑替換實際的訪問路徑,使得瀏覽器認為訪問的資源都是屬於相同協議,網域名稱和埠的,而實際訪問的並不是**路徑,而是通過**路徑找到實際路徑進行訪問,所以,不妨將nginx看作是給瀏覽器的一種障眼法好了,哈哈~

跨域訪問(nginx)

注意 jsonp解決跨域只支援get 請求。ajax 需要自己寫個 函式 function onback 後台介面注意 context.response.write jsonp json.tostring trimend control type 2018 03 21 18 50 09string ...

跨域訪問及Nginx解決跨域訪問

同源策略 sameorigin policy 是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。同源策略是處於對使用者安全的考慮,如果非同源就會受到以下限制 但是事實是經常...

nginx允許跨域訪問

1瀏覽器是禁止跨域訪問 nginx access controller allow origin 頭資訊 告訴瀏覽器 允許跨站訪問 設定誇域訪問 這是執行跨域訪問的網域名稱 access controller allow origin 設定允許跨域訪問的方法 access controller al...