程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • Vue

  • Nuxt

  • Echarts

  • Node

  • git

  • express

    • express基础
    • express中间件
    • express接口
      • 接口编写
      • CORS跨域
        • http响应头
      • 请求分类
      • JSONP
    • express数据库
    • expressWEB开发
  • 微信小程序

  • Spring

  • 后端知识

  • Markdown

  • project

  • 自用文档查询

  • 框架和软件
  • express
yuadh
2022-08-21
目录

express接口

# 接口编写

# CORS跨域

CORS(Cross-Origin Resource Sharing) 跨域资源共享,这些HTTP 响应头决定浏览器是否阻止前端JS代码跨域获取资源

浏览器的同源安全策略默认会阻止网页跨域获取资源,接口服务器配置了 CORS 相关HTTP响应头可以解除跨域访问限制

解决跨域问题

基本使用

const cors = require('cors')
app.use(cors())
1
2

# http响应头

  • Access-Control-Allow-Origin:<origin>|*

    origin 参数值指定了允许访问该资源的外域 URL

    res.setHeader('Access-Control-Allow-Origin','http:yuadh.com')
    
    1
  • Access-Control-Allow-Headerss

    默认情况下,CORS 仅支持客户端向服务器发送以下9个请求头

    Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width、Content-Type(只有三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)

    如果客户端向服务器发送了额外的请求头信息,则需要在服务器端设置额外的请求头声明

    res.setHeader('Access-Control-Allow-Headers','Context-type.X-custom-header')
    
    1
  • Access-Control-Allow-Methods

    默认情况下,CORS仅支持客户端发起 GET、POST、HEAD 请求

    res.setHeader('Access-Control-Allow-Methods','*')
    
    1

# 请求分类

简单请求

  • 请求方式:GET、POST、HEAD

  • HTTP头部信息:Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width、Content-Type(只有三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)

    预检请求

在浏览器与服务器正式通信之前,浏览器会发送OPTION请求进行预检,以获知服务器是否允许该实际请求,所以这个一次的OPTION请求称之为预检请求

# JSONP

如果项目中已经配置了 CORS ,为了防止冲突必须在 CORS 中间件声明之前使用JSONP的接口

//jsonp接口
app.get('/api/jsonp',(req,res)=>{
  
})
app.use(cors())
//开启了 cors 的接口
app.get('/api/get',(req,res)=>{
  
})
1
2
3
4
5
6
7
8
9
编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48
express中间件
express数据库

← express中间件 express数据库→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×