2017-09-22 53 views
0
  • 我有一個Vue.js CLI項目工作。
  • 它通過AJAX從Apache服務的本地主機端口8080訪問數據。
  • 當我構建項目並將其複製到Apache提供的文件夾後,它可以正常工作,並且可以通過該服務器上的AJAX訪問數據。
  • 但是,在開發過程中,由於Vue.js CLI網站由服務於不同端口(8081)的Node.js服務,我得到了跨站點腳本錯誤),並且希望避免跨站點腳本一般來說。

什麼是我可以模擬提供的數據的方式,例如, Vue.js-CLI項目中的某種服務器腳本可以在開發過程中爲端口8081上的AJAX調用提供模擬數據,從而避免所有跨站點腳本問題?現在如何在Vue.js-CLI項目中爲AJAX調用提供數據?

dev: { 
    env: require("./dev.env"), 
    port: 8081, 
    autoOpenBrowser: true, 
    assetsSubDirectory: "static", 
    assetsPublicPath: "/", 
    proxyTable: { 
     "/api": { 
     target: "http://localhost/data.php", 
     changeOrigin: true 
     } 
    }, 

而且使我的AJAX調用是這樣的::

附錄

在我config/index.js文件,我添加了一個proxyTable

axios({ 
    method: 'post', 
    url: '/api', 
    data: { 
     smartTaskIdCode: 'activityReport', 
     yearMonth: '2017-09', 
     pathRewrite: { 
      "^/api": "" 
     } 
    } 

但現在我在我的JavaScript看到控制檯:

Error: Request failed with status code 404

附錄2

表觀愛可信與重新路由的問題,所以我VUE資源嘗試過,但這段代碼顯示錯誤:

var data = { 
    smartTaskIdCode: 'pageActivityByMonth', 
    yearMonth: '2017-09' 
} 
this.$http.post('/api', data).then(response => { 
    this.pageStatus = 'displaying'; 
    this.activity = response.data['activity']; 
    console.log(this.activity); 
}, response => { 
    this.pageStatus = 'displaying'; 
    console.log('there was an error'); 
}); 

回答

1

的的WebPack模板都有自己的文檔,它有在開發過程中有關API代理一章:

http://vuejs-templates.github.io/webpack/proxy.html

如果您使用的,這意味着你會在開發過程中要求從節點服務器上的數據(和節點服務器將代理<對真實後端的請求)以及直接在生產環境中的真實後端,因此您必須在每個環境中使用不同的主機名。

對於這一點,你可以在/config/dev.env.js & /config.prod.env.js

+0

定義一個環境變量我(在我的崗位細節以上)增加了proxyTable在我的'配置/ index.js'文件,但現在我得到的消息'錯誤:請求失敗,狀態碼404'。我需要改變什麼? –

+0

axios中的pathRewrite看起來不對。因爲這發生在請求「離開瀏覽器」之前,所以你的devserver現在接收到一個POST請求給'/',而不是'/ api',所以proxyTable不生效 - 因此,你得到一個404 –

+0

是的,我閱讀axios有這個問題。我實現了vue-resource(上面的代碼),但它沒有獲取數據,它似乎正在訪問服務器。你看到問題是什麼? –

相關問題