• Vue打包后处理跨域


    我们都知道,在处理跨域时经常会用到jsonp,服务器端用到cors,或则本地测试用到nginx反向代理,vue开发模式的proxy等。当我们在自己开发的时候,可能会请求一些网上的接口,但是会遇到一些问题,比如不支持跨域的远程数据接口无法使用,那么要怎么解决呢,先从nginx说起,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,它能够解决开发或则生产模式下的跨域,主要还是配置上的设置。

    我们可以试试,我用的是windows系统的,下载链接,我是下载到了E盘,然后下载完解压

    里面有个conf文件夹,然后用编辑器打开里面的nginx.conf,下面是对它进行跨域的配置,这些是主要参数,其他可以不用管。

     server {
            listen       8181; //端口
            server_name  localhost;
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root  D:vue-websitedist; //路径
                try_files $uri $uri/ /index.html
                a#dd_header 'Access-Control-Allow-Origin' '*';
                index  index.html index.htm;
            }
      location /api/ {
                   add_header 'Access-Control-Allow-Origin' '*';
                   add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS';
                   add_header 'Access-Control-Allow-Headers' 'Authorization';
                   proxy_pass http://www.xxx.com/; //设置要代理的域名
             }

     配置完后启动nginx,start nginx

     

    可以看到

    这说明nginx运行OK,然后打开配置的端口,嘿嘿,运行成功,搞定

    vue-cli3.0已经不需要配置过多的配置选项,vue.config.js就可以搞定,在本地开发中跨域的处理需要在config中配置proxy代理。配置如下

    module.exports = {
            devServer: {
            proxy: {
                '/api': {
                    target: 'http://xxx.xxx.xx',
                    ws: true,  // proxy websockets
                    changeOrigin: true,  // needed for virtual hosted sites
                    pathRewrite: {
                        '^/api': ''  // rewrite path
                    },
                },
            }
        }  
    }

     如果是多个接口需要相应的加入。

    vue打包后会生成一个dist文件,这里面是一些静态资源等,这个时候打开dist里面的html可能会出现空白页,这是因为打包时的路径问题,在config中设置baseUrl就可以解决了

    const BASE_URL = process.env.NODE_ENV === 'prodution' ? '/' : './';

    但是有些接口会出现跨域问题,打开控制台会看到No 'Access-Control-Allow-Origin' header is present on the requested resource.这种请求拦截信息。

    这是因为同源策略的限制,在本地开发时我们在本地启用了一个node服务器,是它帮我们完成了相关的代理任务

    那么打包后如何处理呢。这就要考虑到远程代理了,远程代理的网站很多,这里不做描述,它可以让不支持跨域的远程数据接口支持跨域

    目标很遥远,但是如果你拼了命努力,即使到最后没有达到目标,但是你会发现,在某种程度上你已经成功了。
  • 相关阅读:
    2016年上半年中小学教师资格考试综合素质试题(中学)
    2015年上半年教师资格证考试《中学综合素质》真题--解析
    2014年下半年教师资格证考试《中学综合素质》真题--解析
    2014年上半年教师资格证考试《中学综合素质》真题--解析
    2013年下半年教师资格证考试《中学综合素质》真题--解析
    CSS3新特性
    到底什么是JS原型
    vue路由的两种方式(路由传参)
    vue项目实现路由按需加载(路由懒加载)的3种方式
    js中对象的合并
  • 原文地址:https://www.cnblogs.com/Cavalary/p/10922216.html
Copyright © 2020-2023  润新知