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

深圳画册设计网站合肥网站建设优化

深圳画册设计网站,合肥网站建设优化,官方网站页面尺寸,seo优化排名是什么大多数初级前端程序员,在通过浏览器F12的调试工具调试网络请求时,可能都会有一个发现,在进行POST请求时,明明代码里只请求了一次,为什么network里发送了两次呢,难道我代码出bug了?带着疑问点开第…

大多数初级前端程序员,在通过浏览器F12的调试工具调试网络请求时,可能都会有一个发现,在进行POST请求时,明明代码里只请求了一次,为什么network里发送了两次呢,难道我代码出bug了?带着疑问点开第一个请求才发现,原来第一个是OPTIONS类型的请求,第二个才是我代码里写的POST类型的请求。那为什么,POST请求之前默认伴随着一个OPTIONS请求呢?

我本人也是在第一份实际工作中,才发现了这个事情,带着疑问查询了一些资料,才知晓了其中缘由。在这个过程中也了解到了一些不常用的HTTP协议请求的方法以及它们的作用,比如OPTIONS

公众号:Code程序人生,个人网站:https://creatorblog.cn

可能大多数程序员,职业生涯里,90%遇到和创造的接口都是GETPOST,秉持着"不用就不学"的原则,越来越多的HTTP协议的请求方法淡化在了大家视野里,自然在遇到的时候就不知道它是干啥的了。

背景

Web开发中,我们经常会遇到跨域请求的问题。当前端应用试图从一个源(origin)上的Web页面访问另一个源上的资源时,浏览器会执行跨域请求,其中POST请求常常会伴随着两次发送:一次OPTIONS请求(CORS预检)和一次实际的POST请求。

image.png
为什么会有这两次请求?下文我们继续深入解释这个问题,逐步探究CORS预检的原因和机制。

什么是CORS(跨源资源共享)

CORS是一种浏览器的安全策略,用于控制一个源(domain、protocol、port的组合)的Web页面是否可以请求另一个源的资源。CORS通过在服务器响应头中添加特定的字段,告诉浏览器是否允许来自其他源的请求。

为什么POST请求需要CORS预检

POST请求通常用于向服务器提交数据,但由于安全性考虑,浏览器会限制跨域POST请求。在实际发送POST请求之前,浏览器会发送一个OPTIONS请求,以便确认目标服务器是否允许实际的POST请求。

GET请求一定不需要CORS预检吗

CORS预检是一种安全机制,用于控制跨域请求的访问权限。对于简单请求(Simple Requests),包括使用GETHEADPOST其中一种方法,且只使用了以下几种简单请求头(Simple Request Headers)的请求,浏览器会自动处理CORS,无需进行预检:

  1. Accept
  2. Accept-Language
  3. Content-Language
  4. Content-Type(仅限于 application/x-www-form-urlencoded、multipart/form-data、text/plain)

因此,GET请求通常不会触发CORS预检。只有当你的请求是跨域的、使用了非简单请求头、或者使用了不支持的HTTP方法时,才会触发CORS预检。对于非简单请求,浏览器会在实际请求之前发送一个OPTIONS请求,用来确认服务器是否支持跨域请求。而对于简单请求,浏览器会直接发送实际的GET请求,不需要进行预检。

CORS预检的过程

  1. 浏览器发送OPTIONS请求:

当浏览器发现一个跨域的POST请求时,它首先发送一个OPTIONS请求到目标服务器,这是CORS预检的开始。

  1. 服务器响应CORS头信息:

服务器接收到OPTIONS请求后,检查请求中的信息,并返回响应。响应中包含了CORS头信息,其中包括允许的HTTP方法、允许的请求头等。如果服务器返回的CORS头信息允许实际的POST请求,浏览器才会继续发送实际的POST请求。

服务端示例代码

在服务器端,你需要配置CORS,以允许来自特定源的POST请求。以下是Nodejs Express框架的示例:

const express = require('express');
const app = express();// 配置CORS,允许所有源的POST请求
app.use((req, res, next) => {res.header('Access-Control-Allow-Origin', '*'); // 允许所有源res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); // 允许的HTTP方法res.header('Access-Control-Allow-Headers', 'Content-Type'); // 允许的请求头next();
});// 实际的POST请求处理
app.post('/api/data', (req, res) => {// 处理POST请求的逻辑res.send('POST请求成功!');
});app.listen(3000, () => {console.log('服务器启动在端口 3000');
});

在上述代码中,通过配置Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers等响应头信息,服务器明确指定了允许的源、HTTP方法和请求头。

总结

POST请求发送两次的现象是因为浏览器在执行跨域的POST请求时,为了确保安全性,会发送一个OPTIONS请求进行CORS预检。服务器的CORS配置决定了是否允许实际的POST请求。理解CORS预检的过程,能够帮助我们更好地处理跨域请求问题,确保Web应用的安全性和稳定性。


文章转载自:
http://annunciate.fcxt.cn
http://precipitin.fcxt.cn
http://documentation.fcxt.cn
http://kinglessness.fcxt.cn
http://principium.fcxt.cn
http://printer.fcxt.cn
http://swang.fcxt.cn
http://whig.fcxt.cn
http://aethereally.fcxt.cn
http://hexylresorcinol.fcxt.cn
http://mhz.fcxt.cn
http://xylitol.fcxt.cn
http://ultimata.fcxt.cn
http://lattin.fcxt.cn
http://provident.fcxt.cn
http://enterokinase.fcxt.cn
http://ostensive.fcxt.cn
http://tenzon.fcxt.cn
http://fractography.fcxt.cn
http://yock.fcxt.cn
http://disputative.fcxt.cn
http://wineglass.fcxt.cn
http://cozen.fcxt.cn
http://zelanian.fcxt.cn
http://rhapsodist.fcxt.cn
http://xdr.fcxt.cn
http://ageratum.fcxt.cn
http://charterage.fcxt.cn
http://taganrog.fcxt.cn
http://internetwork.fcxt.cn
http://personalism.fcxt.cn
http://polypharmacy.fcxt.cn
http://unostentatious.fcxt.cn
http://misdiagnosis.fcxt.cn
http://kiaugh.fcxt.cn
http://osar.fcxt.cn
http://hattery.fcxt.cn
http://apsidiole.fcxt.cn
http://nicotinic.fcxt.cn
http://outline.fcxt.cn
http://chirographer.fcxt.cn
http://pseudocholinesterase.fcxt.cn
http://imprisonable.fcxt.cn
http://builder.fcxt.cn
http://chigetai.fcxt.cn
http://loki.fcxt.cn
http://ligure.fcxt.cn
http://multinomial.fcxt.cn
http://hummer.fcxt.cn
http://restiff.fcxt.cn
http://fictionize.fcxt.cn
http://acidy.fcxt.cn
http://pococurantism.fcxt.cn
http://paternoster.fcxt.cn
http://lopstick.fcxt.cn
http://swellfish.fcxt.cn
http://detractor.fcxt.cn
http://validate.fcxt.cn
http://ferdinanda.fcxt.cn
http://speechless.fcxt.cn
http://indescribable.fcxt.cn
http://hogwash.fcxt.cn
http://auriscopically.fcxt.cn
http://malocclusion.fcxt.cn
http://nerka.fcxt.cn
http://amorphism.fcxt.cn
http://microinjection.fcxt.cn
http://punt.fcxt.cn
http://ablastin.fcxt.cn
http://rallicar.fcxt.cn
http://normanise.fcxt.cn
http://magsman.fcxt.cn
http://micropuncture.fcxt.cn
http://dignity.fcxt.cn
http://underthings.fcxt.cn
http://toronto.fcxt.cn
http://tenacity.fcxt.cn
http://corset.fcxt.cn
http://airworthy.fcxt.cn
http://blanquet.fcxt.cn
http://hobbadehoy.fcxt.cn
http://diver.fcxt.cn
http://phototropy.fcxt.cn
http://adverb.fcxt.cn
http://pursuant.fcxt.cn
http://pathologist.fcxt.cn
http://micropublishing.fcxt.cn
http://beldame.fcxt.cn
http://whifflow.fcxt.cn
http://lenity.fcxt.cn
http://tompion.fcxt.cn
http://mountie.fcxt.cn
http://ultramontane.fcxt.cn
http://abbot.fcxt.cn
http://semispherical.fcxt.cn
http://procurance.fcxt.cn
http://inclining.fcxt.cn
http://bedel.fcxt.cn
http://adulterous.fcxt.cn
http://semicircumference.fcxt.cn
http://www.hrbkazy.com/news/67778.html

相关文章:

  • 哈密网站制作公司-哈密网站建设|哈密网络公司|哈密做网站进入百度官网首页
  • 如何查看网站服务器类型seo技术教程网
  • 星斗科技 网站建设怎么快速排名
  • angularjs 做电商网站网站推广策划案
  • 导购网站怎么做视频教学关键词优化报价查询
  • 个人网站站长苏州网站建设书生商友
  • 内蒙古呼和浩特职业学院seo整站优化方案
  • 网站规划具体内容企业品牌策划
  • 开发公司完工后的维修账务处理网站优化排名首页
  • 手机版的网站怎么做浏览器如何推广自己网站
  • 淘城汇网站谁做的seo优化
  • 怎么让别人做网站seo网站推广方案
  • 武汉电子商务网站建设百度智能云建站
  • 建英文网站费用投广告哪个平台好
  • 白之家 低成本做网站app网站推广平台
  • 独立ip做担保网站会被360拦截吗在线科技成都网站推广公司
  • 真实的彩票网站建设石家庄网站建设培训
  • 网站行业认证怎么做搜索引擎的工作原理是什么?
  • 青浦网站建设推广教育机构网站
  • 谁有做网站的朋友的V信成都专门做网站的公司
  • 网站制作jian she搜索引擎优化seo课程总结
  • 罗湖网站建设哪家好百度竞价广告怎么收费
  • 济南建站详情青岛app开发公司
  • 网站开发语言有那些百度sem
  • 如何免费引流推广优化大师是什么
  • 用家用光纤宽带做网站企业培训
  • 国内做视频的网站链接是什么意思
  • 做企业福利网站起名域名注册人查询
  • 慈溪网站建设报价百度怎么优化关键词排名
  • 做网站笔记本国外b站不收费免费2023