最近在刷八股文,刷到这个问题的时候有一点不是很理解
1.get请求会向服务器发送一次请求;
2.post请求会向服务器发送两次请求,第一次是预检请求(也叫option请求),服务器会响应100,然后发送第二次请求,服务器响应200,但不是所有浏览器都发送两次请求,例如火狐;
我记得POST请求预检查不是跨域的时候才会发送吗?
chrome亲测也是如此,请问上面这个说法如何理解呢?
我如下回答可以吗
约定功能定位不同
- GET是获取数据,幂等
- POST是新增或修改数据
浏览器中传递请求参数位置
- GET是url,POST是请求体
- 都可以请求头携带参数
参数大小限制
- GET有限制(2KB,未验证),POST无限制
特殊字符+编码
- GET只能是ascii字符,POST无限制
- GET遇到特殊字符会进行url编码,POST不是必需
缓存 + 保存在浏览器历史记录
- GET可以缓存,POST不可以
- GET新开tab访问可以保存历史记录,POST不可以
chrome 网络选项卡中隐藏了options请求(可以开起来的,不记得在哪里了)
但是你可以在服务器上检测到两次请求。
当然如果 Options 请求被浏览器或服务器拦截,你也看不到, 但是POST之前肯定会发送OPTIONS