我目前在vue.config.js中使用devServer{proxy:{...}}
来配置api调用的代理,以避免应用程序中的CORS问题。当我在本地主机上运行npm run serve
时,效果很好。
现在,我需要将应用程序部署到主机,因此我运行npm run build
,更改Ajax调用的url,并且它没有运行...因此,我确实需要配置代理进行部署(构建),而不是devServer。
正确的方法是什么?
我已经尝试过:
server{proxy:{...}}
和build{proxy:{...}}
,但在运行npm run build
时不允许使用它们。
谢谢!
答案 0 :(得分:1)
您可以尝试另一种将API URL添加到.env文件的方法
如果您使用的是Vue CLI,则可以创建 .env.development 和 .env.production 文件,并将API URL用于开发和生产,例如:
.env.development
VUE_APP_API_URL=http://localhost:8080/api
.env.production
VUE_APP_API_URL=http://myapp.com/api
在项目文件中,您可以通过输入 VUE_APP _ 之类的关键字来访问变量;
您的文件以发出api请求
const url = process.env.VUE_APP_API_URL
const res = axios.get(url, config).then (...)
.catch(...)
中查找更多内容
要处理CORS问题,我可以给您一些提示。
答案 1 :(得分:1)
默认情况下,Vue CLI不会像代理服务器一样交付网络服务器,它将在dist/
目录中部署捆绑的Javascript。
/dist
目录,请找到针对您的提供商(S3,Netlify,Firebase)的说明here,并按照它们进行操作。您遇到了一个问题,因为不应将代理用于生产。随附的代理Vue CLI是webpack-dev-server。 Vue CLI使用它来使您能够在开发期间在本地提供Javascript文件。
如果在prod中使用webpack-dev-server(也称为代理),则存在安全漏洞。不要这样做。
相反,您需要找到正在使用的托管服务提供商,然后按照此处的说明进行操作:https://cli.vuejs.org/guide/deployment.html来部署您的应用程序。如果您的申请是个人的或可以公开的,我建议使用Netlify。
例如... 在我的生产设置中,我们部署到AWS S3存储桶并使用AWS Cloudfront CDN或Fastly CDN来提供内容。我们的API网址始终是生产服务器的网址,我们使用this setting in the proxy传递到本地服务器