当前位置: 首页 > news >正文

【Ajax】笔记-设置CORS响应头实现跨域

CORS

CORS

CORS是什么?

CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持get和post请求。跨域资源共享标准新增了一组HTTP首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源
在这里插入图片描述

CORS怎么工作的?

CORS是通过设置一个响应头来告诉浏览器,该请求允许跨域,浏览器收到该响应以后就会对响应放行。

CORS的使用

主要是服务端的设置:

roter.get("/testAJAX",function(req,res){//通过 res 来设置响应头,来允许跨域请求//res.set("Access-Control-Allow-Origin","http://127.0.0.1:3000");res.set("Access-Control-Allow-Origin","*");res.send("testAJAX 返回的响应")
});

前端

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CORS</title><style>#result{width:200px;height:100px;border:solid 1px #90b;}</style>
</head>
<body><button>发送请求</button><div id="result"></div><script>const btn = document.querySelector('button');const result = document.getElementById("result");btn.onclick = function(){//1. 创建对象const x = new XMLHttpRequest();//2. 初始化设置x.open("GET", "http://127.0.0.1:8000/cors-server");//3. 发送x.send();//4. 绑定事件x.onreadystatechange = function(){if(x.readyState === 4){if(x.status >= 200 && x.status < 300){//输出响应体console.log(x.response);result.innerHTML=x.response;}}}}</script>
</body>
</html>

服务

app.all('/cors-server', (request, response)=>{//设置响应头response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Headers", '*');response.setHeader("Access-Control-Allow-Method", '*');// response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:5500");response.send('hello CORS');
});

测试

在这里插入图片描述

http://www.lryc.cn/news/103816.html

相关文章:

  • 实现Feed流的三种模式:拉模式、推模式和推拉结合模式
  • Vue中使用Typescript及Typescript基础
  • MySQL数据库 【索引事务】
  • 源码阅读:classnames
  • 【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)
  • PostgreSQL中如何配置Huge page的数量
  • Mysql之binlog日志浅析
  • js 生成器函数
  • HCIP OSPF+BGP综合实验
  • 牛客网Verilog刷题——VL46
  • C/C++开源库推荐
  • git常用命令速查表
  • 让两个文件夹里的图片名字一模一样
  • 会议OA系统会议管理模块开发思路(layui搭建)
  • rsync 远程同步
  • PostgreSQL数据库中,查询时提示表不存在的解决办法
  • 视频传输网安全防护体系
  • C# Blazor 学习笔记(1):Blazor基础语法,组件化和生命周期
  • flutter 导出iOS问题2
  • syn报文什么时候会被丢弃?
  • 【C++】开源:Linux端V4L2视频设备库
  • 基于数据驱动的多尺度表示的信号去噪统计方法研究(Matlab代码实现)
  • 【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?
  • 伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码
  • C++推理
  • Day10-作业(SpringBootWeb案例)
  • 源码阅读:p-limit
  • 目标检测-击穿黑夜的PE-YOLO
  • 优化性能压力测试的关键策略和技巧
  • VMware Linux 可视化增加磁盘