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

网站支付宝怎么做织梦只显示网站首页

网站支付宝怎么做,织梦只显示网站首页,云南省建设教育协会网站,网站网页设计专业公司文章目录 前言一、浏览器的重试机制二、跨域请求与预检请求三、表单的自动提交四、服务器配置问题五、前端代码的重复执行六、同源策略与CORS总结 前言 我们在做Web开发时#xff0c;经常会使用浏览器F12查看请求参数是否正确#xff0c;但是会发现POST请求#xff0c;一个地… 文章目录 前言一、浏览器的重试机制二、跨域请求与预检请求三、表单的自动提交四、服务器配置问题五、前端代码的重复执行六、同源策略与CORS总结 前言 我们在做Web开发时经常会使用浏览器F12查看请求参数是否正确但是会发现POST请求一个地址发送了两次请求第一次是OPTIONS第二次才是POST请求下面我们将就是问题进行深入分析。 一、浏览器的重试机制 首先我们得知道有时候浏览器为了保证请求的可靠性会在网络不稳定的情况下自动重试请求。如果第一次POST请求由于网络问题没有成功浏览器可能会自动再发一次请求。这种情况下我们会看到两次POST请求。 例如: fetch(https://example.com/api, {method: POST,body: JSON.stringify({ key: value }),headers: { Content-Type: application/json } }) .then(response response.json()) .then(data console.log(data)) .catch(error console.error(Error:, error));在这个例子中如果网络有问题浏览器可能会自动重试这个请求。 二、跨域请求与预检请求 当我们进行跨域请求时尤其是使用CORS跨域资源共享时浏览器会在正式发送POST请求之前发送一个OPTIONS请求这就是所谓的预检请求。这是为了确定服务器是否允许跨域请求。 例如 fetch(https://api.example.com/data, {method: POST,headers: {Content-Type: application/json,Authorization: Bearer token},body: JSON.stringify({ key: value }) }) .then(response response.json()) .then(data console.log(data)) .catch(error console.error(Error:, error));在开发者工具中我们可以看到先发了一个OPTIONS请求接着才是实际的POST请求。 三、表单的自动提交 有时候表单提交也会导致POST请求发送两次。例如用户不小心双击了提交按钮或者JavaScript代码中没有正确阻止表单的默认提交行为。 例如 form idmyForm action/submit methodpostinput typetext nameusername /button typesubmitSubmit/button /formscript document.getElementById(myForm).addEventListener(submit, function(event) {event.preventDefault();fetch(/submit, {method: POST,body: new FormData(this)}).then(response response.json()).then(data console.log(data)).catch(error console.error(Error:, error)); }); /script在这个例子中如果没有event.preventDefault()表单会自动提交同时AJAX请求也会发送导致两次POST请求。 四、服务器配置问题 有时候服务器的配置问题也会导致POST请求被处理两次。例如服务器可能会进行一些重定向操作使得同一个请求被重复处理。 五、前端代码的重复执行 前端代码中的逻辑错误也可能导致POST请求重复发送。例如在某些情况下如果事件监听器被多次绑定或者函数被多次调用都会导致POST请求重复发送。 例如 function sendPostRequest() {fetch(https://example.com/api, {method: POST,body: JSON.stringify({ key: value }),headers: { Content-Type: application/json }}).then(response response.json()).then(data console.log(data)).catch(error console.error(Error:, error)); }// 错误的事件监听器绑定 document.getElementById(submitButton).addEventListener(click, sendPostRequest); document.getElementById(submitButton).addEventListener(click, sendPostRequest);在这个例子中由于addEventListener被调用了两次sendPostRequest函数会执行两次从而导致两次POST请求。 六、同源策略与CORS 同源策略是浏览器的一种安全机制用于防止不同来源的资源互相访问。如果两个URL的协议、主机和端口都相同我们就称这两个URL是同源的。同源策略限制了网页脚本如何与来自不同源的资源进行交互。 同源策略主要表现在以下三个方面 DOM 访问限制同源策略限制了网页脚本访问其他源的DOM。这意味着通过脚本无法直接访问跨源页面的DOM元素、属性或方法。这是为了防止恶意网站从其他网站窃取敏感信息。Web 数据限制同源策略也限制了从其他源加载的Web数据例如XMLHttpRequest或Fetch API。在同源策略下XMLHttpRequest或Fetch请求只能发送到与当前网页具有相同源的目标。这有助于防止跨站点请求伪造CSRF等攻击。网络通信限制同源策略还限制了跨源的网络通信。浏览器会阻止从一个源发出的请求获取来自其他源的响应。这样做是为了确保只有受信任的源能够与服务器进行通信以避免恶意行为。 CORS跨源资源共享是一种机制允许在受控的条件下不同源的网页能够请求和共享资源。CORS提供了一种方式来解决在Web应用中进行跨域数据交换的问题。 例如 fetch(https://api.example.com/data, {method: POST,headers: {Content-Type: application/json,Authorization: Bearer token},body: JSON.stringify({ key: value }) }) .then(response response.json()) .then(data console.log(data)) .catch(error console.error(Error:, error));在上面的示例中如果服务器允许跨域请求它会在响应中提供相应的CORS头信息浏览器就会允许跨域请求的结果被使用。 总结 POST请求发送两次的问题看似简单实际上涉及了很多知识点包括浏览器的重试机制、跨域请求的预检机制、表单的自动提交、服务器配置问题以及前端代码中的逻辑错误等。
http://www.hkea.cn/news/14425556/

相关文章:

  • 创建网站需要多少资金免费算命免费 生辰八字
  • 做那个免费视频网站潍坊网站建设优化
  • 网站 建设 维护 公司西安网站设计开发
  • 网站2级目录怎么做的做网站如何把栏目放到首页
  • 安阳做网站的地方上海市建设执业注册中心网站
  • 手机创建个人网站 免费设计网页时有哪些配色方法
  • 超炫酷网站欣赏涞源县住房和城乡建设局网站
  • 站长之家排行榜北京住房与城乡建设网站
  • 类似酷家乐做庭院的网站项目负责人质量建设厅官方网站
  • html 图片展示网站ios 集成wordpress
  • vs做asp网站淘宝的电子商务网站的建设
  • 做网站后台应该谁来做石家庄网络推广优化
  • 山东高端网站建设wang莆田百度seo排名
  • 关于公司做网站供比价报告网站建设基础书本
  • 佛山招收网站设计免费开发平台网站
  • 网站建站哪家公司好一点什么是软件定制开发
  • 北京做网站建设公司wordpress代码学习
  • 一个虚拟空间可以放几个网站中国航天空间站最新消息
  • 盐城网站建设找哪家好WordPress下级
  • 西安优化seo班级优化大师官网登录
  • 西安大型网站开发大数据营销试卷
  • 南京网站建设要多少钱抖音电商
  • 湖北大网站建设免费搭建企业网站
  • 网站负责人核验现场拍摄照片电子件广州竞价外包
  • 上海网站建设官方网站2d游戏制作软件
  • seo优化工具使用教程东莞网站快速排名优化
  • 萍乡商城网站建设环保企业网站模板
  • 做网站每年需要多少维护费免费ai写作网站3000字
  • 电商网站统计怎么做学校网站建设先进事迹
  • 网站建设与维护报告总结做网站的收益在哪