- 非标准HTTP方法如POST、PUT、DELETE;
- 发送自定义请求头,例如一个使用自定义请求头 X-Custom-Header 的 POST 请求可能会触发预检索:
fetch('https://other-domain.com/api/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Custom-Header': 'custom value'
},
body: JSON.stringify({ data: 'example' })
});
- 请求体非
application/x-www-form-urlencoded
、multipart/form-data
、text/plain
3.1. application/x-www-form-urlencoded:用于表单数据编码,如果没有指定enctype属性,默认就用此格式;
<form method="post" action="/login">
<input type="text" name="username" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<button type="submit">登录</button>
</form>
数据结构:username=john&password=123456
3.2. multipart/form-data: 复杂数据结构,比如文件上传等,
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="text" name="description" placeholder="描述信息">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
3.3 text/plain:纯文本格式的数据,用于简单的文本数据提交,
<form method="post" action="/submit-text">
<textarea name="text-content"></textarea>
<button type="submit">提交</button>
</form>
服务器对于OPTIONS请求的相应必须包含特定的CORS相关响应头,如Access-Control-Allow-Origin(允许访问的源)
、Access-Control-Allow-Methods(指定允许的HTTP方法)
、Access-Control-Allow-Headers(指定允许的请求头)
等,否则浏览器会阻止实际的POST请求。