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

fetch跨域请求数据的前端设置和后端php的header设置

跨源请求,也称为CORS(Cross-Origin Resource Sharing)请求,是Web开发中常见的一种需求,允许一个网页的JavaScript代码向与该网页不同源的服务器发出HTTP请求。以下是使用JavaScript中的fetch函数进行跨源请求的一个基本示例:
这里做测试的是前端http://127.0.0.1:5500/fetchcors.html
后端:http://xuejx.xyz/fetchcors.php
他们是在不同的域下,进行跨域请求

<html><head><meta http-equiv="content-type" content="text/html;charset=UTF-8"/><title>测试fetch的跨域请求</title></head><body><script>//跨域请求后端URLconst url='http://xuejs.xyz/fetchcors.php';//fetch的第2个参数init对象配置const options={method:'GET',//请求模式getheaders:{'Content-Type':'application/json'//设置请求标头数据为json格式},};fetch(url,options).then((response)=>{if(!response.ok){throw new Error('network response was not ok');}//response.type是请求返回的数据特征,这里结果为:cors表示跨域console.log(response.type);//获取后端返回数据转化为json,json()是response的方法,会自动转化为jsonreturn response.json();}).then(data=>{console.log(data);//显示返回数据}).catch(error=>{console.log('fetch操作发生一个错误:',error);});</script></body>
</html>

//后端fetchcors.php
// 检查是否是OPTIONS请求,如果是,则发送CORS预检请求的响应
if ($_SERVER[‘REQUEST_METHOD’] == ‘OPTIONS’) {
header(‘Access-Control-Allow-Origin: *’); // 允许跨域访问的域名,*代表允许所有域名
header(‘Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS’); // 允许的HTTP方法这几种
header(‘Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With’); // 允许的头信息有这三种
header(‘Access-Control-Max-Age: 1728000’); // 设置预检请求的有效时间
exit;
}

<?php
//允许前端请求的域名
$allow_orgin='http://127.0.0.1:5500';
//OPTIONS 请求方式是 HTTP 协议中的一种,主要用于从响应头中获取服务器支持的HTTP请求方式
if($_SERVER['REQUEST_METHOD']=='OPTIONS')
{header('Access-Control-Allow-Origin:'.$allow_orgin);//设置前端跨域的域名header('Access-Control-Allow-Methods:GET');//请求方式为GETheader('Access-Control-Allow-Headers:Content-Type');//请求的数据格式header('Access-Control-Max-Age:300000');//请求的预检时间为5分钟exit;//设置完后退出
}
//现在设置本页面的数据格式
header("Content-Type:application/json");
//本页面允许的跨域请求前端域名
header('Access-Control-Allow-Origin:'.$allow_orgin);
//返回给前端的数据
$data=['id'=>1,'name'=>'James doe','email'=>'James@163.com'
];
echo json_encode($data);
?>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 高性能web服务器--nginx
  • 【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task3:源大模型RAG实战(持续更新)
  • 【AI趋势8】具身智能
  • Leetcode 第 137 场双周赛
  • Python酷库之旅-第三方库Pandas(088)
  • 单词搜索
  • 鸿蒙(API 12 Beta3版)【元数据(C/C++)】媒体相机开发指导
  • 获取操作系统的信息(Go语言)
  • 第10章 使用Entity Framework Core 保存数据
  • servlet基础操作(get)
  • HarmonyOS应用三之组件生命周期和参数传递
  • Apollo9.0 PNC源码学习之Planning模块—— Lattice规划(四):纵向运动轨迹规划
  • python:画由抛物线: y^2=2x 与直线 y=x-4 所围成的图形
  • DHU OJ 二维数组
  • Spring Boot 3.3 【四】Spring Boot 整合JPA
  • php的引用
  • [数据结构]链表的实现在PHP中
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • IndexedDB
  • JavaScript对象详解
  • Javascript设计模式学习之Observer(观察者)模式
  • JavaScript设计模式与开发实践系列之策略模式
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • python docx文档转html页面
  • react-native 安卓真机环境搭建
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 软件开发学习的5大技巧,你知道吗?
  • 责任链模式的两种实现
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #Linux(make工具和makefile文件以及makefile语法)
  • (2)nginx 安装、启停
  • (2022 CVPR) Unbiased Teacher v2
  • (SERIES12)DM性能优化
  • (SpringBoot)第二章:Spring创建和使用
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • ******之网络***——物理***
  • ... 是什么 ?... 有什么用处?
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net SqlSugarHelper
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 反射的使用
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 无限分类
  • .NET 中让 Task 支持带超时的异步等待
  • .net中应用SQL缓存(实例使用)
  • .net专家(张羿专栏)
  • .project文件
  • @Bean注解详解