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

呼和浩特建设厅网站恩施seo

呼和浩特建设厅网站,恩施seo,网站建设模块怎么使用,南宁做网站在哪了文章目录 前言一、浏览器的重试机制二、跨域请求与预检请求三、表单的自动提交四、服务器配置问题五、前端代码的重复执行六、同源策略与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.w-s-a.com/news/297084/

相关文章:

  • 中小学生做试卷的网站6网站建设需要注意哪些细节
  • 以个人名义做地方门户网站社保服务个人网站
  • 上海企业做网站设计制作感悟150字
  • asp.netmvc网站开发ps设计网页
  • win2008 挂网站 404官方网站是什么
  • 网站只做内容 不做外链做姓氏图的网站
  • 中国建设银行信用卡黑名单网站wordpress怎么解密密码
  • 建设银行如何网站设置密码广州网站营销推广
  • 企业做网站的步骤与做网站注意事项四川省住房建设厅网站打不开
  • 网页设计网站规划报告百度文库官网登录入口
  • 郑州医疗网站开发wordpress能注册
  • 创建网站的英语石家庄微信网站建设
  • 分享几个x站好用的关键词微信商城小程序开发一般需要多少钱
  • 做韩国外贸网站wordpress手机版中文
  • 建站群赚钱有前途吗蚌埠北京网站建设
  • 北京网站建设求职简历十堰seo优化教程
  • 网站顶部可关闭广告微信小程序多少钱
  • 网站背景怎么弄斜杠青年seo工作室
  • ps个人网站首页怎么制作如何做网站的版块规划
  • 做网站的市场开源建站工具
  • 邹平做网站哪家好自动点击器app
  • 南阳seo网站排名优化wordpress文章对游客不显示
  • 网站301什么意思湛江市seo网站设计报价
  • 免费建造网站化妆品网络营销方案
  • 建公司网站wordpress the content
  • 网站的站点的管理系统建设银行网站注册企业
  • 长春火车站是哪个站做微商哪个网站有客源
  • 亚马逊培训费用一般多少seo专业培训课程
  • 做推文封面图网站南宁高端网站建设
  • 天津网站搜索排名做电影免费ppt模板下载网站