nuxt中-axios跨域- 服務器端渲染


今天在做項目中,遇到一個問題,在一個點擊事件中利用axios發請求,出現了跨域問題,之前都是直接用的服務器端渲染,然后就一直沒出現,還是解決了很久的,所以決定把問題及解決方案記錄下來。

 tree.vue :

   

  

  

最終解決方案

在nuxt項目中的server文件中的index.js中攔截一個地址替我們發這個請求,

server/index.js或者vue中的server.js

 

此時就需要在我們的點擊事件中請求我在server的index.js的地址,及   /api/user/login

頁面地址:tree.vue

 

 

 console.log

 

 然后跨域就解決了

其中可以簡單的了解一下原理,因為跨域是瀏覽器出現的,而服務器端渲染是不需要瀏覽器的支持的,簡單地說,就是他在瀏覽器渲染之前,就已經拿到數據了,所以就跟正常的請求一樣,就不會出現跨域問題了。

這里就是利用server/index.js來作為中間層處理的,把我們的普通請求也變成了服務器端渲染,所以在我的頁面寫點擊事件的時候,就是在自己的源拿的數據,因此就不會出現跨域了。

 

在寫的時候要注意一些問題。

1,利用req.query來獲取頁面傳來的參數

tree.vue

 

 

server/index.js----->接收參數重新發請求

 

 2,此處有兩個res,上面為了區分,特意用了response來代替,避免沖突

  server/index.js

  

  response是作為別人請求/api/user/login成功的返回結果,而res是作為里面的axios請求成功后的結果

3,server/index.js發請求寫的位置

  

  因為app.use(nuxt.render)是使沒有做處理的請求,反過來說,就是把需要做特殊處理的請求寫在前面,后面的就表示剩下的不需要做特殊處理的請求,就按正常的渲染方式就好了。(這個app.use(nuxt.render)可能解釋不怎么好,這個因為是自帶的,也不太好解釋)

然后這個最終就算是這樣解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM