nextJS axios 跨域

nextJS axios 跨域


nextjs-react,解决前端跨域问题

一缕微风
发布于 3 月 3 日
方法有很多这里只列举两例(修改nextconfig文件和使用express+http中间件)
跨域解决问题
本地开发dev环境
1、 next.config.js文件 重写地址(实现跨域)

module.exports = {

async rewrites() {
return [
//接口请求 前缀带上/api-text/
{ source: ‘/api-text/:path*’, destination: http://127.0.0.1:8080/:path* },

]

},
}
2、 express http-proxy-middleware 中间件解决

根目录下创建server.js文件

// server.js
const express = require(‘express’)
const next = require(‘next’)
const { createProxyMiddleware } = require(‘http-proxy-middleware’)
const devProxy = {
‘/api-text’: {
target: ‘http://127.0.0.1:8080/’, // 端口自己配置合适的
pathRewrite: {
‘^/api-text’: ‘/’
},
changeOrigin: true
},
‘/api’: {
target: ‘http://127.0.0.1:3000/’, // 端口自己配置合适的
pathRewrite: {
‘^/api’: ‘/’
},
changeOrigin: true
}
}

const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== ‘production’
const app = next({
dev
})
const handle = app.getRequestHandler()

app.prepare()
.then(() => {
const server = express()

  if (dev && devProxy) {
      Object.keys(devProxy).forEach(function(context) {
          server.use(createProxyMiddleware(context, devProxy[context]))
      })
  }

  server.all('*', (req, res) => {
      handle(req, res)
  })

  server.listen(port, err => {
      if (err) {
          throw err
      }
      console.log(`> Ready on http://localhost:${port}`)
  })

})
.catch(err => {
console.log(err)
})
修改package.json,添加一则内容
“scripts”: {
“dev:node-middleware”: “node server.js”,
},
线上配置nginx服务器转发接口实现跨域即可

dev 开发亲测有效
link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Next.js 是一个用于构建高性能、现代 web 应用的框架,而 Axios 是一个流行的 JavaScript 库,用于处理 HTTP 请求。在 Next.js 中,Axios 可以轻松地与你的应用集成,提供跨域请求、错误处理等功能。 下面是使用 Axios 在 Next.js 中的基本操作: 1. 安装 Axios: 首先,你需要在项目中安装 Axios。在终端或命令提示符中运行 `npm install axios` 或 `yarn add axios`。 2. 创建实例:在 Next.js 组件或服务器中间件中,你可以创建 Axios 实例: ```javascript import axios from 'axios'; const instance = axios.create({ baseURL: process.env.API_URL, // 如果你的 API 不在根路径,可以配置 base URL headers: { 'Content-Type': 'application/json' }, }); ``` 3. 发送请求:使用创建的实例发送 GET、POST 等请求: ```javascript // 获取数据 async function fetchData() { try { const response = await instance.get('/api/data'); return response.data; } catch (error) { console.error(error); } } // 发送 POST 请求 async function postData(data) { try { const response = await instance.post('/api/submit', data); return response.data; } catch (error) { console.error(error); } } ``` 4. 链接 useEffect 和 async/await: 在 Next.js 的组件中,你可以将 Axios 调用与 useEffect 结合,以在组件加载时执行异步请求: ```javascript import { useEffect, useState } from 'react'; function MyComponent() { const [data, setData] = useState(null); useEffect(() => { fetchData().then((response) => setData(response)); }, []); // ...剩下的组件代码 } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值