webpack学习记录(十)-跨域

webpack学习记录(十)-跨域

准备工作

建一个简单的服务端

const express = require('express')

let app = express()

app.get('/api/user', (req,res) => {
    res.json({msg:'服务器启动'})
)
app.listen(3000)

发送一个请求

let xhr = new XMLHttpRequest()

xhr.open('get','/api/user',true)
xhr.onload = function () {
    console.log(xhr.response)
}
xhr.send()

这里就涉及到跨域问题了,用webpack-dev-server启动默认是8080端口,但是服务端监听的是3000端口。

解决办法如下。

方法一

请求到 /api/xxx 现在会被代理到请求 http://localhost:3000/xxx, 例如 /api/user 现在会被代理到请求 http://localhost:3000/user

devServer: {
    proxy: {
        '/api': {
            target: 'http://localhost:3000',
            pathRewrite: {'/api': ''}
        }
    }
}
方法二

安装中间件,在服务器中启动webpack

npm i webpack-dev-middleware -D

const express = require('express')
const webpack = require('webpack')
const middle = require('webpack-dev-middleware')
const config = require('./webpack.config.js')

let compiler = webpack(config)
let app = express()

app.use(middle(compiler))

app.get('/api/user', (req,res) => {
    res.json({msg:'服务器启动'})
)
app.listen(3000)
使用钩子函数模拟数据
devServer:{
    before(app){
        app.get('/user',(req,res) => {
            res.json({msg:'服务器启动'})
        })
    }
}

原文地址:https://www.cnblogs.com/Arohaa/p/12534258.html

时间: 2024-08-10 15:32:22

webpack学习记录(十)-跨域的相关文章

webpack学习记录(十二)-区分不同环境

webpack学习记录(十二)-区分不同环境 定义全局变量 使用webpack内置的插件DefinePlugin 允许创建一个在编译时可以配置的全局常量. 用法 //在webpack.config.js中配置插件 new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(true) }) //在index.js中使用定义的变量 if (!PRODUCTION) { console.log('Debug info') } if (PRODUCTIO

webpack学习记录(九)-小插件应用

webpack学习记录(九)-小插件应用 clean-webpack-plugin 每次输出之前先删除之前的目录,即每次输出都是最新的打包文件 安装及配置 npm i clean-webpack-plugin -D // 注意该插件引入方式需要用解构赋值才有效 const {CleanWebpackPlugin} = require('clean-webpack-plugin') module.exports = { plugins: [ new CleanWebpackPlugin() ] }

学习 jsonp 解决跨域

转载自http://www.cnblogs.com/qyf404/p/3868611.html 1.起因 js脚本做ajax异步调用的时候,直接请求普通文件存在跨域无权限访问的问题,不管你是静态页面.动态网页.web服务,只要是跨域请求,都无法成功: 如果上句话没明白,我们直接看例子.有两个一模一样的项目,一个webApp01,一个webApp02,分别在两个tomcat里启动,一个端口是8080,一个端口是9080.即两个访问地址是 http://localhost:8080/webApp01

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:

webpack学习记录(一)-起步

基本安装 首先建一个你的项目工程目录,初始化npm,在本地安装webpack以及webpack-cli mkdir webpack-demo cd webpack-demo npm init -y npm install webpack webpack-cli --save-dev 现在进入该项目目录,创建下面这个目录结构 webpack-demo ????|- package.json +??|- index.html +??|- /src +???? |- index.js src/inde

webpack之proxyTable设置跨域

为什么要使用proxyTable 很简单,两个字,跨域. 在平时项目的开发环境中,经常会遇到跨域的问题,尤其是使用vue-cli这种脚手架工具开发时,由于项目本身启动本地服务是需要占用一个端口的,所以必然会产生跨域的问题.当然跨域有多种解决方式,这里就不一一例举,下次弄篇文章单独讲,在使用webpack做构建工具的项目中使用proxyTable代理实现跨域是一种比较方便的选择. 如何使用proxyTable 还是拿之前使用过的vue-cli举例.我们首先要在项目目录中找到根目录下config文件

前端-【学习心得】-跨域问题

我们知道,一般做web的时候会遇到所谓的跨域问题. 所谓跨域就是浏览器在全局层面禁止了页面加载或执行与自身来源不同的域的任何脚本. 比如我们本地开发的静态界面写的ajax请求如果 不进行配置是无法得到服务器响应的. 当然我们可以把静态界面放到服务器下,比如tomcat 的webapp,或者放到node express 项目的静态路径下,都可以访问成功,当然如果想要减轻服务器的负担,可以把静态文件用nginx代理. 不过不管怎么样开发起来还是多有不便,这里来跟大家分享下如何制作跨域的. 我们这里不

webpack学习记录

1.最近没事做就学习了一下webpack,因为之前有接触过seajs和requirejs但是他们都没打包和webpack那么强大 WebPack的特点 丰富的插件,方便进行开发工作 大量的加载器,包括加载各种静态资源 代码分割,提供按需加载的能力 发布工具 那我们直接进入正题: 因为webpack是基于nodejs的,所以本地要安装下nodejs  npm 安装那两个我就不多说啦,网上教程一大堆. WebPack的安装 安装命令 $ npm install webpack -g 使用webpac

Webpack 学习记录-02

想在HTMl页面中生成内联的JS代码: index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><%= htmlWebpackPlugin.options.title %></title> <script type="text/javascript"&g