详解VueJs前后端分离跨域问题


Posted in Javascript onMay 24, 2017

使用vue-cli搭建的vue项目

可以使用在项目内设置代理(proxyTable)的方式来解决跨域问题

设置配置项的目录在config下的index.js,主要通过配置proxyTable项,设置代理指向你的后台地址

dev: {
  env: require('./dev.env'),
  port: 8085,
  autoOpenBrowser: true,
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
  proxyTable: {
   '/agent': {
    target: 'http://127.0.0.1:7105/',
    changeOrigin: true,
    pathRewrite: {
     '^/agent': ''
    }
   }
  },
  // CSS Sourcemaps off by default because relative paths are "buggy"
  // with this option, according to the CSS-Loader README
  // (https://github.com/webpack/css-loader#sourcemaps)
  // In our experience, they generally work as expected,
  // just be aware of this issue when enabling this option.
  cssSourceMap: false
 }

前端使用vue-resource来发起请求时

//在main.js中设置公用的地址
Vue.prototype.rootUrl = '/agent/';

//在具体page中发起请求的方式
that.$http.post(this.rootUrl + 'login', parms).then(function (response) {
     // 响应成功回调
     console.log(response);
    }, function (response) {
     // 响应错误回调
    });

其他方式搭建的前端项目,通过使用nginx启动前端服务同时配置代理

下列是我的nginx配置文件,不管是通过什么方式搭建的前端项目,构建成功后都会输出一个dist文件,我们只需要将nginx服务目录指向你的dist文件下你项目的入口文件即可

我的文件目录是 root D:\openplatform\portal\webapp\dist; 更改此条配置到你的目录 我入口文件名称是index.html 使用的是vue-cli打包的项目,参考vue-cli npm run build的dist目录,指向那个目录下

#user nobody;
worker_processes 4;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include    mime.types;
  default_type application/octet-stream;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" "$status" $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio" $request_time $bytes_sent $request_length';

  log_format main '[$time_iso8601] [$remote_addr] [$request] [$http_user_agent] [$cookie_customerID_cookie_flag] [$args]';

  access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;

  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 3;
  gzip_proxied any;
  gzip_types *;

  server {
    listen     80;
    root D:\openplatform\portal\webapp\dist;
    index index.html;

    location / {
       try_files $uri $uri/ @router;
       index index.html;
      }
  location @router {
       rewrite ^.*$ /index.html last;
    }
  location ^~/agent/ {
      proxy_pass  http://127.0.0.1:7105/;
      proxy_redirect  http://127.0.0.1:7105/ /;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 600s;
      proxy_read_timeout 600s;
      proxy_send_timeout 600s;
    }
  }


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}


  # HTTPS server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;

  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;

  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;

  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
jquery cookie的用法总结
Nov 18 Javascript
删除节点的jquery代码
Jan 13 Javascript
用队列模拟jquery的动画算法实例
Jan 20 Javascript
JS数组array元素的添加和删除方法代码实例
Jun 01 Javascript
详解Jquery实现ready和bind事件
Apr 14 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
Apr 19 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
使用JS动态显示文本
Sep 09 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 Javascript
vue实现购物车结算功能
Jun 18 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
May 24 #Javascript
angular directive的简单使用总结
May 24 #Javascript
深入理解JavaScript 参数按值传递
May 24 #Javascript
详解Angular 4.x NgTemplateOutlet
May 24 #Javascript
javascript简单写的判断电话号码实例
May 24 #Javascript
Angular2搜索和重置按钮过场动画
May 24 #Javascript
深入理解react-router@4.0 使用和源码解析
May 23 #Javascript
You might like
业余方法DIY电子管FM收音机
2021/03/02 无线电
PHP实现合并两个排序链表的方法
2018/01/19 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
常用jQuery代码分享
2015/07/14 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
python实现清屏的方法
2015/04/30 Python
python中的全局变量用法分析
2015/06/09 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
Hotels.com中国区:好订网
2016/08/18 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
Oracle的内存结构(Memory structures)
2015/06/10 面试题
新闻发布会主持词
2014/03/28 职场文书
《秋游》教学反思
2014/04/24 职场文书
我的长生果教学反思
2014/04/28 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android
详解Vue slot插槽
2021/11/20 Vue.js
Redis过期数据是否会被立马删除
2022/07/23 Redis