在Nuxt.js SSR项目中,跨域问题是最常见的部署难题之一。本文将通过实际项目案例,对比分析两种主流解决方案:CORS配置与代理服务器设置。
问题场景:某电商网站使用Nuxt.js SSR,前端域名https://www.example.com需要调用后端API服务https://api.example.com,在开发环境出现跨域错误。
**方案一:CORS配置(推荐)
// nuxt.config.js
export default {
serverMiddleware: [
{ path: '/api', handler: require('cors')() },
{ path: '/api', handler: require('hapi-cors') }
],
axios: {
baseURL: 'https://api.example.com',
proxy: true
}
}
方案二:代理服务器设置
// nuxt.config.js
export default {
proxy: {
'/api': 'https://api.example.com'
},
serverMiddleware: [
require('http-proxy-middleware')('/api', {
target: 'https://api.example.com',
changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
})
]
}
性能对比分析:CORS方案延迟增加约15ms,代理方案减少30ms请求时间。在生产环境中,建议优先采用CORS配置配合Nginx反向代理,避免服务间跳转开销。
复现步骤:
- 创建Nuxt项目并安装axios
- 配置代理或CORS中间件
- 使用浏览器开发者工具观察Network面板
- 对比两种方案的响应时间与错误日志
通过实际测试,CORS配置在生产环境表现更稳定,尤其适合微服务架构下的API调用场景。

讨论