CORS 和 JSONP 解决跨域问题

由于浏览器的同源策略,不同协议、域名、端口的网页是不允许互相请求资源的。但在前后端分离的开发模式中,前后端的域名是不一样的,如果要进行数据的交互就会产生跨域。

解决跨域的方案:

一:cors设置请求头

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

  1. CORS 主要在服务器端进行配置。客户端浏览器无须做任何额外的配置,即可请求开启了 CORS 的接口
  2. CORS 在浏览器中有兼容性。只有支持 XMLHttpRequest Level2 的浏览器,才能正常访问开启了 CORS 的服务端接口(例如:IE10+Chrome4+FireFox3.5+
  1. cors 是 Express 的一个第三方中间件。通过安装和配置 cors 中间件,可以很方便地解决跨域问题
  2. 使用步骤
    • 安装中间件: npm install cors
    • 导入中间件: const cors = require('cors')
    • 配置中间件: 在路由之前调用app.use(cors())
  3. 示例代码
   // 导入 express 模块
   const express = require('express')
   
   // 创建 express 的服务器实例
   const app = express()
   
   // 导入中间件
   const cors = require('cors')
   // 配置中间件
   app.use(cors())
   
   // 配置解析表单数据的中间件
   app.use(express.urlencoded({ extended: false }))
   
  // 挂载一个路由
   app.post('/test', (req, res) => {
     res.send(req.body)
   })
   
   // 调用 app.listen 方法,指定端口号并启动 web 服务器
   app.listen(3000, () => {
     console.log('serve is running')
   })
   

二:JSONP请求

  1. 浏览器端通过

你可能感兴趣的:(CORS 和 JSONP 解决跨域问题)