axios 跨域, 在实例化的时候 baseURL 应该写什么?是否写代码运行的地址(开发环境写自己的地址及端口,打包发布写发布后运行的地址及端口?)??还是应该怎么办?看到有人直接写 /api 的,但是如果有多个就弄不了了啊。。
const https = axios.create({
baseURL:'???'
})
配置:
export default defineConfig({
server:{
proxy:{
'/api': {
target: 'https://www.baidu.com/api',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
},
}
}
})
该回答内容部分引用GPT,GPT_Pro更好的解决问题
axios 跨域, 在实例化的时候 baseURL 应该写什么?
baseURL 应该写入发布后运行的地址及端口,比如 http://example.com:8080。
在实际应用中,我们也可以直接写 /api,因为有时候我们只有一个 API 后端服务器,如果有多个 API 后端服务器,我们可以使用代理技术来解决跨域问题。代码如下:
const https = axios.create({
baseURL: '/api', // 使用/api作为baseURL
proxy: {
target: 'http://example.com', // 目标后端服务器的地址
changeOrigin: true, // 让跨域请求能够正常发出
rewrite: (path) => path.replace(/^\/api/, '') // 重写路径,把/api去掉
}
})
上面的代码中,我们将 baseURL 设置为 /api,然后使用 proxy 配置来跳转到真正的 API 后端服务器。因此,我们需要根据实际情况来决定 baseURL 的内容。
如果回答有帮助,望采纳。
在使用axios发送请求时,如果请求的目标服务器与当前应用程序运行的服务器不在同一个域名下,那么就会发生跨域问题。解决跨域问题有多种方法,其中一种方法是在后端配置CORS,另一种方法是在前端使用代理来转发请求。不管采用哪种方式,axios的baseURL参数的设置应该是目标服务器的地址,而不是当前应用程序的地址。
如果在开发环境中使用代理,那么可以将请求代理到目标服务器上,这样请求就不会发生跨域问题。在这种情况下,baseURL应该设置为代理的地址。在生产环境中,应该将baseURL设置为目标服务器的地址。
如果您使用axios进行跨域请求,您可以在实例化的时候设置baseURL为您要请求的服务器地址,例如:
const api = axios.create({
baseURL: 'http://localhost:8888'
});
然后您可以使用api.post(‘/url’, data)等方法发送请求,baseURL会自动拼接到url前面45。
如果您的开发环境和发布环境的服务器地址不同,您可以使用环境变量来动态设置baseURL4。例如:
const api = axios.create({
baseURL: process.env.REACT_APP_BASE_URL || 'http://localhost:8888'
});
这样当您打包发布时,只需要设置REACT_APP_BASE_URL为发布后运行的地址即可。
不知道你这个问题是否已经解决, 如果还没有解决的话: