当前位置: 首页 > 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/14499047/

相关文章:

  • PHP网站开发成功案例今鼎网站建设
  • 轻松建站公司网站模板怎么做
  • 注册网站会员需要填写信息做短视频的能跟几个网站签约
  • 唐山网站建设互众动力个性化网页设计
  • 美食论坛网站模板app排名优化
  • 建个企业网站需要什么win10 安装wordpress
  • 网站内容转载discuz做网站
  • 网站优化 北京深圳建设网站首页
  • 支付宝也做网站吗做网站策划一个专利的主题宣传
  • 网站建设需要配置环境么网站建设二级菜单
  • iis网站访问权限免费最新如何建设网站教程视频
  • 做博客网站如何盈利网站快速收录软件
  • 老薛主机做多个网站手机怎么建立网站
  • c 做网站推广网站怎么做知乎
  • 中细软做的网站上海百度seo点击软件
  • 成都网站服务如何在360网站网页上做笔记
  • 专门做羽毛球的网站青海网站维护
  • 响应网站怎么做信息发布平台推广有哪些
  • wordpress文章字体修改为宋体网站seo快速排名软件
  • 网站建设所需的硬软件成品网站源码1688自动跳转
  • 国外h5分享网站wordpress怎么选主题
  • wordpress本站只对会员开放项目外包平台接活
  • phpcms 手机网站静态网页设计实训心得
  • 网站定制开发成本上海尚海整装官方网站
  • 购票网站模板国外服务器购买推荐
  • 京东网站的建设与发展现状公司做卖网站有前景吗
  • 桂林网站制作哪家公司好怎么看网站是不是用凡客做的
  • 凯里网站建设gzklyy邯郸网站建设 安联网络公司
  • 怎样做网站后台运营营销网站案例
  • 做分销微商城网站乐清企业