IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Node.js(八)——用express写接口同时解决跨域问题 -> 正文阅读

[JavaScript知识库]Node.js(八)——用express写接口同时解决跨域问题

基本步骤

  • 创建基本的服务器
  • 创建API路由模块
  • 写get接口 / 写post接口

创建基本服务器

//导入express模块
const express = require('express')
//创建express 的服务器实例
const app = express()

//调用app.listen 方法,指定端口号并启动Web服务器
app.listen(80, function() {
	console.log('running at 80')
})

创建API路由模块

const express = require('express')
const apiRouter = express.Router()

module.exports = apiRouter

const apiRouter = require('./apiRouter.js')
app.use('/api', apiRouter)

编写GET接口 / 编写POST接口

get接口

apiRouter.get('/get', (res, req)=> {
	const query = req.query
	res.snd({
		status: 0,
		msg: 'GET请求成功',
		data: query
	})
})

post接口

apiRouter.get('/post', (res, req)=> {
	const body= req.body
	res.snd({
		status: 0,
		msg: 'POST请求成功',
		data: body
	})
})

跨域问题

关于跨域的基础知识和解决方法点击这里可以参考

上面写的GET和POST接口存在很严重的问题就是不支持跨域请求
解决跨域的两种主要方法:

  • COPS(主流方法)
  • JSONP(只支持GET请求)

下面主要记述CORS解决跨域问题

使用CORS解决跨域问题

我们通过安装和配置中间件的方法可以便捷的解决跨域问题

  1. 运行npm install cors 安装中间件
  2. 使用 const cors = require(‘cors’) 导入中间件
  3. 在路由之前调用 app.use(cors()) 配置中间件
  • 什么是CORS
    由一系列HTTP相应头组成,这些http响应头决定浏览器是否阻止前端JS代码跨域获取资源。
    (浏览器的同源策略会阻止网页跨域获取资源。但如果接口服务器配置了CORS相关的CORS响应头就可以解除浏览器端的跨域访问限制。)这篇文章里有说到同源策略

CORS注意事项

  • CORS主要在服务器端进行配置。客户端浏览器无需做其他额外的配置
  • CORS在浏览器中有兼容性
  • CORS响应头
    指定Access-Control-Allow-Origin字段的值为通配符‘*’,表示允许来自任何域的请求
res.setHeader('Access-Control-Allow-Origin','*')

在这里插入图片描述
默认情况下,CORS仅支持GET, POST, HEAD请求,如果要用PUT, DELETE请求,需要通过'Access-Control-Allow-Methods' 来指明实际请求所允许使用的http方法

//只允许GET, POST, HEAD, DELETE请求
res.setHeader('Access-Control-Allow-Methods','GET, POST, HEAD, DELETE')
//允许所以的http方法
res.setHeader('Access-Control-Allow-Methods','*')
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:49:40  更:2022-06-26 16:50:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:51:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码