vue-cli项目开发/生产环境代理实现跨域请求【结合nginx服务器来实现---最简单的方式】【有坑】

参考文档【这个文章是有坑的,下面讲解】:https://www.cnblogs.com/goloving/p/8901189.html

 

关于Vue.js开发环境跨域生成环境跨域有一个误区会导致你开发环境跨域成功,而生成环境跨域失败!

 

开发环境配置跨域【这个网上一搜大把的资料,很简单】

【务必注意,开发环境配置:这里会把路径开头包含 /api 的全部替换成 http://127.0.0.1:8099

        /**
         * vue-cli3跨域的全配置!
         */
        proxy: {
            "/api": {
                //你要跨域的域名(包含host、端口号,切记:一定要带上http头);
                //同一个域名只能设置一次跨域,否则重复报错!
                target: "http://127.0.0.1:8099",
                ws: true,
                changeOrigin: true, //是否跨域,设置为true;(必须)
                pathRewrite: {
                    "^/api": "/", // 设置/api路径重定向为根目录"/";
                },
            }
        }

生产环境的配置nginx服务器跨域:【务必注意,nginx服务器配置:这里的/api不是替换http://127.0.0.1:8099,而是重定向为:http://127.0.0.1:8099/api】-----这里就是和开发环境最大的区别----也是我们最容易犯的错误,导致没办法保持开发和生成环境路径一致,切记切记切记

【务必注意,这里的/api不是替换http://127.0.0.1:8099,而是重定向为:http://127.0.0.1:8099/api】

location /api {
     proxy_pass http://127.0.0.1:8099;
}

假设你的api开发路径为:【http://127.0.0.1:8099/api/v1/users/test/index】那一定要注意开发环境配置路径和生成环境nginx服务器配置路径的区别了,否则在【/api】这个地方会出现错误!

 

 

最后的总结:为了保证开发环境和生成环境的代码一致性,我们有必要在两个环境下配置一个统一的跨域路径!【修改一下开发环境的跨域重定向路径即可!】

修改开发环境的跨域配置为【生成环境nginx服务器配置和和上面一样】:

      /**
         * vue-cli3跨域的全配置!
         */
        proxy: {
            "/api": {
                //你要跨域的域名(包含host、端口号,切记:一定要带上http头);
                //同一个域名只能设置一次跨域,否则重复报错!
                target: "http://127.0.0.1:8099",
                ws: true,
                changeOrigin: true, //是否跨域,设置为true;(必须)
                pathRewrite: {
                    // 这里会把当前域名下路径/api开头的地方替换为http://127.0.0.1:8099/api【这样就可以和服务器nginx保持一致的路径】
                    "^/api": "/api", // 设置/api路径重定向为根目录"/api";
                },
            }
        }

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要解决vue-pdf的问题,可以采取以下几种方法: 1. 使用代理服务器:可以在vue.config.js中配置代理服务器,将请求发送到代理服务器上,再由代理服务器请求pdf文件。这样可以避免直接在前端发起请求,从而解决问题。 2. 设置响应头:在后端服务器中设置Access-Control-Allow-Origin头,允许前端的请求访问。可以设置"*"表示允许所有名的请求,也可以指定具体的名。 3. 使用后端接口:将pdf文件存储在后端服务器上,然后通过后端接口去请求pdf文件并返回给前端。这样可以避免直接在前端发起请求。 4. JSONP方式请求:如果后端支持JSONP方式,可以在前端使用JSONP方式请求pdf文件。JSONP通过动态创建<script>标签实现请求,并且服务器返回的是一段可执行的JavaScript代码。 以上是几种常用的解决vue-pdf问题的方法,具体选择哪种方法取决于项目需求和后端支持情况。 ### 回答2: Vue-pdf是一个用于在Vue项目中显示PDF的插件。在某些情况下,可能会遇到问题,即无法加载外部PDF文件。以下是解决问题的方法: 1. 在Vue项目的配置文件vue.config.js中添加webpack配置。找到configureWebpack选项,添加以下代码: ``` module.exports = { configureWebpack: { devServer: { headers: { "Access-Control-Allow-Origin": "*" } } } } ``` 这将设置允许所有名访问该服务。请注意,这样做可能会在生产环境中引起安全风险,仅在开发环境中使用。 2. 使用一个代理服务器代理PDF文件的请求。在vue.config.js中添加以下代码: ``` module.exports = { devServer: { proxy: { '/api': { target: 'http://example.com', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` 这将把以/api开头的请求转发到http://example.com上。确保将http://example.com替换为实际的PDF文件所在的服务器地址。 3. 将PDF文件转换为base64编码格式,然后通过URL.createObjectURL方法将其作为Blob对象传递给vue-pdf。可以使用axios或其他网络请求库来获取PDF文件,并使用FileReader将其转换为base64编码。 以上方法中的任何一种都可以解决问题,需要根据具体情况选择适合的方法。 ### 回答3: 要解决Vue-PDF的问题,可以通过设置服务器代理、使用nginx来解决。下面将详细介绍两种方法: 1. 设置服务器代理: 如果Vue项目是使用vue-cli创建的,并且项目使用的是webpack-dev-server作为开发服务器,可以在项目的根目录下创建vue.config.js文件,并在其中添加以下内容: ```javascript module.exports = { devServer: { proxy: { '/api': { // 将/api替换为实际的API请求前缀 target: 'http://example.com', // 设置实际接口的名 changeOrigin: true, // 允许 secure: false // 关闭SSL验证 } } } } ``` 其中,`/api`是你实际的API请求前缀,`http://example.com`是实际接口的名。这样,当你在Vue组件中发起API请求时,会自动将请求代理到指定的名,解决了问题。 2. 使用nginx: 如果项目部署在nginx服务器上,可以通过配置nginx来解决问题。首先,打开nginx的配置文件,在`http`块中添加以下内容: ```nginx location /api/ { rewrite ^.+api/?(.*)$ /$1 break; proxy_pass http://example.com/; // 将example.com替换为实际的接口名 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` 在上述配置中,`/api/`是你实际的API请求前缀,`http://example.com/`是实际接口的名。这样,当你在Vue组件中发起API请求时,nginx会将请求代理到指定的名,解决问题。 无论是使用服务器代理还是nginx,都可以解决Vue-PDF的问题。根据具体情况选择适合自己项目的方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值