| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> CORS和JSONP跨域资源共享 -> 正文阅读 |
|
[JavaScript知识库]CORS和JSONP跨域资源共享 |
使用Express写接口1.创建基本服务器
2.创建API路由模块
如果要获取URL-encoded格式的请求体数据,必须配置中间件?app.use(express.urlencoded({ extended: false })) 以上代码在未解决跨域的情况下直接使用会在浏览器控制台报跨域的错误!!!! 解决办法的方案有两种: 1.CORS(主流方案,推荐) 2.JSONP(有缺陷,只支持GET请求) 使用CORS中间件解决跨域先介绍CORS方法: cors 是 Express 的一个第三方中间件。通过安装和配置 cors 中间件,可以很方便地解决跨域问题。 使用步骤分为如下 3 步: ① 运行 npm install cors 安装中间件 ② 使用 const cors = require('cors') 导入中间件 ③ 在路由之前调用 app.use(cors()) 配置中间件 至于什么是CORS,详情可见下面的博客:链接如下 http://www.ruanyifeng.com/blog/2016/04/cors.html CORS请求分类客户端在请求 CORS 接口时,根据请求方式和请求头的不同,可以将 CORS 的请求分为两大类,分别是: ①简单请求
②预检请求
在浏览器与服务器正式通信之前,浏览器会先发送 OPTION 请求进行预检,以获知服务器是否允许该实际请求,所以这一 次的 OPTION 请求称为“预检请求”。服务器成功响应预检请求后,才会发送真正的请求,并且携带真实数据。 简单请求和预检请求的区别 简单请求的特点:客户端与服务器之间只会发生一次请求 预检请求的特点:客户端与服务器之间会发生两次请求,OPTION 预检请求成功之后,才会发起真正的请求 JSONP跨域资源共享首先,JSONP不属于真正的ajax请求,它是通过script标签的src属性来请求服务器上的数据,同时服务器响应一个函数调用携带数据,这种请求方式叫JSONP. 特点: ① JSONP 不属于真正的 Ajax 请求,因为它没有使用 XMLHttpRequest 这个对象。 ② JSONP 仅支持 GET 请求,不支持 POST、PUT、DELETE 等请求。 使用JSONP接口的注意事项: 如果项目中已经配置了CORS,为了防止冲突,必须在CORS中间件之前声明JSONP接口,不然JSONP接口就会被解析成CORS接口! JSONP跨域资源共享首先,JSONP不属于真正的ajax请求,它是通过script标签的src属性来请求服务器上的数据,同时服务器响应一个函数调用携带数据,这种请求方式叫JSONP. 特点: ① JSONP 不属于真正的 Ajax 请求,因为它没有使用 XMLHttpRequest 这个对象。 ② JSONP 仅支持 GET 请求,不支持 POST、PUT、DELETE 等请求。 使用JSONP接口的注意事项: 如果项目中已经配置了CORS,为了防止冲突,必须在CORS中间件之前声明JSONP接口,不然JSONP接口就会被解析成CORS接口! 实现JSONP接口的步骤
html中调用ajax函数,发送jsonp请求:
成功会在控制台打印如下信息: ? |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/29 4:25:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |