详解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各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
JavaScript中数据结构与算法(三):链表
Jun 19 Javascript
同步文本框内容JS代码实现
Aug 04 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
js仿淘宝评价评分功能
Feb 28 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
微信小程序中使用ECharts 异步加载数据的方法
Jun 27 Javascript
详解react native页面间传递数据的几种方式
Nov 07 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
React 组件渲染和更新的实现代码示例
Feb 21 Javascript
Jquery让form表单异步提交代码实现
Nov 14 jQuery
vue总线机制(bus)知识点详解
May 10 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
PHP源码之explode使用说明
2011/08/05 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
python实现中文输出的两种方法
2015/05/09 Python
python实现多线程端口扫描
2019/08/31 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
如何在python中执行另一个py文件
2020/04/30 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
电信营业员自我评价分享
2014/01/17 职场文书
推荐信格式要求
2014/05/09 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
《火烧云》教学反思
2016/02/23 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL