1、报错

在这里插入图片描述

2、解决

方法一:修改 package.json

在 package.json 中添加代码

"proxy": "http://tingapi.ting.baidu.com" // 这是你要访问的域

然后重新运行,否则会报如下错误:修改了 package.json 需要重启
在这里插入图片描述
请求成功:
在这里插入图片描述

方法二:使用 http-proxy-middleware(常用)

安装

cnpm install http-proxy-middleware --save

配置:在 src 下新建一个 setupProxy.js ,添加如下代码

const proxy = require('http-proxy-middleware')

module.exports = function (app) {
  app.use(
    'api',
    proxy({
      target: 'http://localhost:3100', // 你要访问的地址
      changeOrigin: true
    })
  )
}

重启遇到问题:
在这里插入图片描述
百度之后,在一篇博客中发现原来是 http-proxy-middleware 版本更新带来的问题

0.x.x版本的引用方式
const proxy = require('http-proxy-middleware');
1.0.0版本的引用方式
const { createProxyMiddleware } = require('http-proxy-middleware');

修改成以下,重启

const { createProxyMiddleware } = require('http-proxy-middleware')

module.exports = function (app) {
  app.use(
    'api',
    createProxyMiddleware({
      target: 'http://localhost:3100',
      changeOrigin: true
    })
  )
}

成功


3、关于跨域

常用解决方法:

  • jsonp
  • CORS
  • 代理 proxy

3.1 什么是跨域

在这里插入图片描述

3.2 常用解决方案

开发模式下:react、vue都提供了解决方案
生产模式下:jsonp、cors、iframe、postMessage、……

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐