在日常開發中,經常會遇到通過訪問不同域名下的接口來獲取數據的需求,但是由于安全原因,瀏覽器不允許js跨域調用不同域名下的資源,這就需要我們通過一些手段來解決跨域問題。
在使用Vue時,經常會遇到一個問題:當我們使用localhost作為開發環境時,如果我們的接口也是在localhost下,那么我們就會遇到跨域的問題。其實Vue已經幫我們封裝好了解決跨域問題的方法,我們只需要在配置文件中進行配置即可。
// vue.config.js文件 module.exports = { devServer: { proxy: 'http://localhost:8888' } }
我們可以通過在vue.config.js文件中配置devServer屬性來解決跨域問題。上述示例中,我們將接口地址設置為了http://localhost:8888,這樣Vue在發起AJAX請求時就會將請求轉發到localhost:8888下,從而規避了跨域問題。
值得注意的是,如果你的接口不是在localhost下,那么你需要將proxy屬性的值修改為你接口的地址,例如:
// vue.config.js文件 module.exports = { devServer: { proxy: 'http://www.example.com' } }
同樣的,如果你的接口在多個地址下,那么你可以使用對象的方式來進行配置:
// vue.config.js文件 module.exports = { devServer: { proxy: { '/api1': { target: 'http://www.example1.com', pathRewrite: {'^/api1': '/api'} }, '/api2': { target: 'http://www.example2.com', pathRewrite: {'^/api2': '/api'} } } } }
上述示例中,我們通過對象的方式對兩個地址下的接口進行了配置,Vue在發起請求時,如果請求地址以/api1開頭,則會將請求轉發至http://www.example1.com/api下;如果請求地址以/api2開頭,則會將請求轉發至http://www.example2.com/api下。
另外,如果你的接口是https協議,那么需要將proxy屬性的值修改為https:
// vue.config.js文件 module.exports = { devServer: { proxy: 'https://www.example.com' } }
總之,在使用Vue開發時,由于Vue已經幫我們封裝好了解決跨域問題的方法,我們只需要簡單的配置一下,就能夠輕松地解決跨域問題,從而更好的完成我們的開發工作。
下一篇c拼json串