webpack跨域问题

产生跨域问题:

创建一个express服务器:

//server.js文件
//内部自带一个express框架
let express = require(‘express‘);
let app = express();
let webpack = require(‘webpack‘);

//中间件
let miiddle = require(‘webpack-dev-middleware‘);
let config = require(‘./webpack.config.js‘);
let compiler = webpack(config);

app.use(miiddle(compiler));

app.get(‘/api/user‘,(req,res)=>{
    res.json({name:"张三"});
});

app.listen(3000,()=>{
    console.log(‘running...‘);
});

如上代码可知,服务器请求了3000端口:

创建一个ajax对象获取数据:

//index.js文件
//创建一个ajax
let xhr = new XMLHttpRequest();
//默认访问的路径是:http://localhost:8080   但是服务端请求的是3000端口
//如果把路径写死:xhr.open(‘GET‘,‘http://localhost:8080/api/user‘,true);肯定会跨域
//可以先发送到8080,即webpack-dev-server的服务,再把这个请求转发给3000端口
xhr.open(‘GET‘,‘/api/user‘,true);

xhr.onload = function(){
    console.log(xhr.response);
}
//发送出去
xhr.send();

为了解决跨域问题,提供三种方法:

1.重写的方式,把请求代理到express服务器上。在配置文件webpack.config.js中配置一个服务器代理:

devServer:{
    proxy:{
            ‘/api‘:‘http://localhost:3000‘  //配置了一个代理,即访问api开头的都去3000端口找
        }
    }

现在可以通过8080端口来访问。注意:必须都打开3000端口的服务器和8080端口的服务器,否则访问不了

2.前端只想单纯来模拟数据,直接用它内部的express来写接口,在配置文件webpack.config.js中配置

devServer:{
    before(app){ //提供的方法:钩子
            app.get(‘/api/user‘,(req,res)=>{
                res.json({name:"张三"});
            });
        }
}

3.有服务端,且不想用代理来处理,能不能在服务器中启动webpack,端口用服务端webpack-dev-server端口。

即前端和服务端使用的是一个端口,也不会产生跨域问题

安装webpack开发服务的中间件,可以在服务端启动webpack:npm install webpack-dev-middleware -D

server.js文件做如下修改:

//server.js文件
//内部自带一个express框架
let express = require(‘express‘);
let app = express();
let webpack = require(‘webpack‘);

//中间件
let miiddle = require(‘webpack-dev-middleware‘);
let config = require(‘./webpack.config.js‘);
let compiler = webpack(config);

app.use(miiddle(compiler));

app.get(‘/api/user‘,(req,res)=>{
    res.json({name:"张三"});
});

app.listen(3000,()=>{
    console.log(‘running...‘);
});

此时不仅仅只启动了server.js,还启动了webpack

原文地址:https://www.cnblogs.com/zcy9838/p/11679020.html

时间: 2024-07-29 13:35:48

webpack跨域问题的相关文章

Vue学习----webpack跨域问题proxyTable

跨域问题,搜索https://www.cnblogs.com/wancheng7/p/8987694.html,先学习一下, 在根目录config文件下的index.js中添加代码 '/api': { target: 'http://www.abc.com', //目标接口域名 changeOrigin: true, //是否跨域 pathRewrite: { '^/api': '/api' //重写接口 } }, 在App.vue下获取,将跨域的域名替换成/api/ created(){ th

vue webpack 跨域代理

dev: { env: require('./dev.env'), port: 8080, autoOpenBrowser: false, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { '/api': { target: 'http://10.69.205.36:8000', changeOrigin: true, pathRewrite: { '^/api': '' } }, '/v1': { target

vue2.0 +vux+webpack 跨域代理 以及vux ajax请求插件 的拦截请求 验证key

简单设置,解决使用webpack前后端跨域发送cookie的问题

最近用vue来做项目,用webpack来做前端自动化构建.webpack-dev-server会在本地搭建一个服务器,在和后端调试的时候,就会涉及到跨域的问题. 刚开始时,没有用vue-cli来构建项目,而是参考了github上的vue-vueRouter-webpack来构建.看网上的资料,vue-cli可以通过配置代理来解决跨域的问题: proxyTable: { '/list': { target: 'http://api.xxxxxxxx.com', changeOrigin: true

vue-cli webpack 开发环境跨域

edit dev.proxyTable option in config/index.js. The dev server is using http-proxy-middleware for proxying 为了解决跨域问题, 通常会使用Jsonp,但是jsonp只能是get请求. 或者使用CORS支持,设置Access-Control-Allow-Origin: * 0 前置技能 熟悉vue-loader 和 webpack 1 基本配置 编辑confix/index.js文件 dev s

vue项目开发,用webpack配置解决跨域问题

今天在本地开发时候碰到了跨域的问题,突然觉着跨域问题在所难免啊,之前没有没有碰到总觉着解决跨域很高大上的样纸,其实就是受限于网络的同源策略,跨域前后端都可以进行处理. 1,后端更改header header('Access-Control-Allow-Origin:*');//允许所有来源访问 header('Access-Control-Allow-Method:POST,GET');//允许访问的方式 2,使用jsonp进行跨域 getData () { var self = this $.

跨域 webpack + vue-cil 中 proxyTable 处理跨域

跨域 了解同源政策:所谓"同源"指的是"三个相同". 协议相同 域名相同 端口相同 解决跨域 jsonp 缺点:只能get请求 ,需要修改B网站的代码 cors 这个方案缺点 是 ie6 7 兼容不好(倒是不见得要兼容).需要B网站在响应中加头 postMessage 缺点也是 ie6 7 兼容不好(倒是不见得要兼容).需要修改B网站的代码 iframe window.name 传值得方式很巧妙,兼容性也很好.但是也是需要你能修改B网站代码 服务端主动请求B网站,兼

vue webpack配置解决跨域问题

现在基本项目都是实行前后端分离的原则,不管是ng 或者是vue 在开发中都无法避免跨域的这个问题 本人刚上手第一个vue项目,在调用api的时候出现了跨域的这个问题 这是封装好一个简单的post 请求 http.js post (url, data) { return axios({ method: 'post', baseURL: '/api', url, data: data, timeout: 10000, headers: { 'X-Requested-With': 'XMLHttpRe

webpack自带的跨域代理配置

问题:开发过程中难免有跨域的问题. 解决:webpack代理的配置 const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const webpack = require('webpack'); module.exports = { entry: