详解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 相关文章推荐
jquery的键盘事件修改代码
Feb 24 Javascript
document.documentElement和document.body区别介绍
Sep 16 Javascript
二叉树的非递归后序遍历算法实例详解
Feb 07 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
Aug 08 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
react 创建单例组件的方法
Apr 26 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
Vue Object 的变化侦测实现代码
Apr 15 Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 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
图解上海144收音机
2021/03/02 无线电
SONY SRF-M100的电路分析
2021/03/02 无线电
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
python进阶教程之文本文件的读取和写入
2014/08/29 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
python回调函数用法实例分析
2015/05/09 Python
python fabric实现远程部署
2017/01/05 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
python定时任务 sched模块用法实例
2019/11/04 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
思想品德自我鉴定
2013/10/12 职场文书
社区工作者先进事迹
2014/01/18 职场文书
目标管理责任书
2014/04/15 职场文书
个人作风建设总结
2014/10/23 职场文书
导师对论文的学术评语
2015/01/04 职场文书
英语教师求职信范文
2015/03/20 职场文书
教师学习心得体会范文
2016/01/21 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
golang的文件创建及读写操作
2022/04/14 Golang