您好,登錄后才能下訂單哦!
今天小編給大家分享一下nginx跨域問題如何解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
前后端分離,使用nginx解決跨域問題
前端:vue.js+nodejs+webpack
后臺:springboot
反向代理服務器:nginx
思想:將前端代碼打包,讓nginx指向靜態資源,nginx對后臺請求進行轉發。
1、將前端代碼打包:
npm run build
會生成一個dist文件夾。包含一個index.html文件和一個static文件夾,路徑以我本地為例:
/users/xxx/ideaprojects/webtest/dist
2、打開
/usr/local/etc/nginx目錄下的nginx.conf,在server中添加如下:
listen 80; #原為8080,避免沖突,更改為80 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /users/xxx/ideaprojects/webtest/dist; index index.html; # 此處用于處理 vue、angular、react 使用h5 的 history時 重寫的問題 if (!-e $request_filename) { rewrite ^(.*) /index.html last; break; } } # 代理服務端接口 location /api/ { proxy_pass http://localhost:8080/;# 代理接口地址 }
測試
前端發送請求:http://localhost/test ,vue-router將其重定向為http://localhost/api/demo/1,實際訪問是http://localhost:8080/demo/1。
直接向后臺發送請求:訪問http://localhost/api/demo/1,實際訪問是:http://localhost:8080/demo/1
內容擴展思考:
1).
# 代理服務端接口
location /api/ { proxy_pass http://localhost:8080/;# 代理接口地址 }
代理接口地址只到8080,那么他會自動將后臺項目的名稱加上??? 比如接口是http://148.70.110.87:8080/項目名稱/方法名稱 。。。
2).js 中是這樣請求的 ,nginx是按照您上面的配置,但是請求出錯http://148.70.110.87/api/index2 404 (not found)
axios.post('/api/index2') .then( (response) =>{ console.log(response); }) .catch( (error)=> { console.log(error); });
3).第三個步驟,測試,實在看不懂要是能有相關的代碼就好了
以上就是“nginx跨域問題如何解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。