Detailed explanation of the Cross-origin issue of VueJs frontend and backend separation, vuejs

Source: Internet
Author: User

Detailed explanation of the Cross-origin issue of VueJs frontend and backend separation, vuejs

Vue project built using vue-cli

You can use proxyTable in the project to solve cross-origin problems.

Set the index. js directory under config. Configure the proxyTable item to set the proxy pointing to your background address.

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 }

When the frontend uses vue-resource to initiate a request

// In main. set the public address Vue in js. prototype. rootUrl = '/agent/'; // method of sending a request on a specific page that. $ http. post (this. rootUrl + 'login', parms ). then (function (response) {// callback console after successful response. log (response) ;}, function (response) {// response error callback });

For other frontend projects, you can use nginx to start the frontend service and configure the proxy at the same time.

The following is my nginx configuration file. No matter how the front-end project is built, a dist file will be output after the build is successful, we only need to direct the nginx service directory to the entry file of your project under your dist file.

My file directory is root D: \ openplatform \ portal \ webapp \ dist; change this configuration to your directory. My file name is index.html and is a vue-cli package project, refer to the dist directory of vue-cli npm run build and point to the directory

#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;  #  }  #}}

The above is all the content of this article. I hope it will be helpful for your learning and support for helping customers.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.