fetch进行post请求为什么会首先发一个options 请求?

不仅仅是fetch,只要你满足以下几种情况,都会去发起一个 Preflighted requests,也就是options请求,参见上面链接。

  • It uses methods other than GET, HEAD or POST. Also, if POST is used to send request data with a Content-Type other than application/x-www-form-urlencoded, multipart/form-data, ortext/plain, e.g. if the POST request sends an XML payload to the server using application/xmlor text/xml, then the request is preflighted.
  • It sets custom headers in the request (e.g. the request uses a header such as X-PINGOTHER)


你看看你是不是触发这几个条件中的其中一种了吧,浏览器在发起跨域请求的时候会带着一个`Origin` header,那么其实就是个custom headers,那么也就会先触发一个Preflighted requests,
Fetch Standard 也有提到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fetch是一种用于发送网络请求的API,可以通过fetch发送POST请求POST请求是一种向服务器提交数据的HTTP请求方法。在fetch发送POST请求,可以使用第二个参数来配置请求的方法、头部信息和请求体。 首先,我们需要创建一个包含请求信息的对象。例如,我们可以创建一个对象包含URL、请求头、请求方法和请求体等。然后,将这个对象作为参数传递给fetch函数。 ```javascript const url = 'https://api.example.com/post'; const data = { username: 'example', password: 'password' }; const options = { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }; fetch(url, options) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.log(error)); ``` 在上面的示例中,我们定义了一个URL,并且创建了一个options对象。这个对象中,我们将请求方法设为POST,设置了请求头的Content-Type为application/json,并通过JSON.stringify将data对象转换为JSON字符串后,作为请求发送给服务器。 然后,我们使用fetch函数发送POST请求,并且通过.then方法处理响应数据。在这个例子中,我们将响应数据解析为JSON格式,并将其输出到控制台。如果请求失败,我们通过.catch方法捕获错误并输出到控制台。 这就是使用fetch发送POST请求的基本过程。通过这种方式,我们可以向服务器发送带有请求体的POST请求,并且可以通过.then方法处理响应数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值