[英]How to set Nuxt.js' config for axios baseURL to work globally?
通过创建项目
npm init nuxt-app <project-name>
在此处为 axios 配置baseURL
npm install @nuxtjs/axios
nuxt.config.js
modules: [
'@nuxtjs/axios',
],
axios: {
baseURL: 'http://localhost:9000',
},
publicRuntimeConfig: {
axios: {
browserBaseURL: process.env.BROWSER_BASE_URL
}
},
privateRuntimeConfig: {
axios: {
baseURL: process.env.BASE_URL
}
},
在 pages/post.vue 中使用
axios.get('/posts')
无法在9000
中调用服务器,但将基础 URL 设置为3000
,其中端口 nuxt.js 正在运行。
如果在pages/post.vue
中配置axios.defaults.baseURL = 'http://localhost:9000'
则可以正常访问。
因为您正在访问axios
的“全局”实例,所以为了使用@nuxtjs/axios
提供/配置的实例,请在您的 Vue 组件中使用this.$axios.get('/posts')
。
在此处查看更多详细信息: https://axios.nuxtjs.org/usage
================================
更新
要在您的请求中添加基本身份验证,您可以使用 nuxt 插件扩展$axios
实例(这里有一些详细信息Extending Axios和这里Nuxt Plugin )。
在您的插件中,在onRequest
回调中添加授权 header :
export default ({ $axios }) => {
$axios.onRequest(config => {
config.headers.common['Authorization'] = 'Basic {your base64 encoded username/password here}'
})
}
虽然不建议将登录凭证直接放在源代码中,使用环境变量会更合适,但这是另一个话题,您可以查看此处https://nuxtjs.org/docs/2.x/configuration-glossary/ configuration-env/如果你有兴趣。
就 CORS 错误而言,它基本上意味着浏览器不允许 JavaScript 与具有不同域/端口/模式(来源)的远程服务器通信,除非远程服务器在Access-Control-Allow-Origin
中以匹配的来源进行响应header。 一个简单的修复方法是添加Access-Control-Allow-Origin: *
header 如果您可以控制服务器,则在您的服务器响应中,但您可以搜索更多详细信息,此问题有不同的解决方案,可能更适合你的具体情况。
要访问全局,您需要使用 this.$axios 并且不需要在其他地方导入它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.