provisional headers are shown 原因分析

本文探讨了在发送HTTP请求过程中遇到的provisional headers are shown现象及其背后的原因,通常涉及网络延迟或服务器逻辑错误导致客户端长时间未能接收到响应的情况。文章进一步解释了这种情况下浏览器如何拦截后续对同一URL的请求,并提供了解决方案。

情景再现:

在发送http请求时,审查元素查看网络,有时会出现provisional headers are shown。与此同时,点击preview、response你都会发现是空的。

 

原因:

client发送请求后,由于各种原因,比如网络延迟,server端逻辑错误,导致client端长时间未收到响应。

 

chrome下右键---->审查元素---->network---->查看请求,能看到此种错误

 

后台迟迟未给予响应带来的影响:
后续对这一url的请求都不会发送,浏览器给拦截了,这个情况是我在点击发送验证码时发现的,后台插入mongodb时阻塞了,导致没有给予前台响应。从而导致后续请求被浏览器忽略掉。

 

解决方案

改正占用很长时间的server端程序。

 

9年全栈开发经验,请关注个人公众号

个人公众号

 

 

### ### 原因分析Provisional headers are shown”通常出现在客户端尝试建立网络请求时,但请求尚未完成或被中断。在钉钉小程序真机测试中,这一问题可能由多种因素导致: - **本地服务器无法被访问**:当钉钉小程序运行在真机上时,使用`localhost`或`127.0.0.1`作为请求地址将无法访问开发机上的本地服务器,因为它们指向的是设备本身而非开发机。解决方案是使用局域网IP地址进行访问[^1]。 - **SSL证书问题**:如果使用HTTPS协议,但SSL证书链不完整(例如缺少中间证书),部分客户端可能无法正确建立连接。这会导致请求被中断,显示“Provisional headers are shown”[^2]。 - **跨域请求问题(CORS)**:服务器未正确配置CORS策略,导致请求被浏览器拦截。 - **域名未加入白名单**:钉钉小程序对网络请求的域名有严格的白名单限制,未在后台配置的域名将被拦截。 --- ### ### 解决方案 #### 使用局域网IP地址进行真机调试 在本地开发环境中使用`localhost`或`127.0.0.1`进行调试,这些地址在真机调试时无法正确解析。应通过局域网IP地址进行访问: - 在开发机上使用命令行工具获取局域网IP地址: - Windows:`ipconfig` - macOS/Linux:`ifconfig` - 修改小程序中的请求URL,使用该IP地址替代`localhost`或`127.0.0.1`: ```javascript // 示例:修改请求URL为局域网IP地址 const baseUrl = 'http://192.168.1.100:3000'; // 替换为你的局域网IP地址和端口号 dd.http.post({ url: `${baseUrl}/api/login`, data: { username: 'test', password: '127.0.0.1' }, success(res) { console.log('登录成功:', res.data); }, fail(err) { console.error('请求失败:', err); } }); ``` 确保真机与开发机处于同一Wi-Fi网络下,否则无法通过局域网IP访问服务器。 #### 检查并补全SSL证书链 如果使用HTTPS协议,但证书链不完整,部分客户端将无法信任该证书,导致请求失败。可以通过以下方式解决: - 使用SSL证书检测工具(如 [SSL Checker](https://csr.chinassl.net/ssl-checker.html))检查证书链是否完整。 - 如果检测结果显示缺少中间证书,需补全证书链。可以使用 [MySSL证书链下载工具](https://myssl.com/chain_download.html) 获取完整的证书链。 - 将补全后的证书重新部署到服务器,并再次检测证书链是否完整。 #### 配置CORS策略 确保服务器端设置了适当的响应头,允许来自钉钉小程序的请求来源(Origin): - 设置`Access-Control-Allow-Origin`、`Access-Control-Allow-Methods`、`Access-Control-Allow-Headers`等响应头。 - 确保服务器允许`POST`、`OPTIONS`等方法,并接受`Content-Type`为`application/json`的请求。 #### 配置钉钉小程序域名白名单 钉钉小程序对网络请求的域名有严格的白名单限制。未在后台配置的域名将被拦截: - 登录钉钉开发者后台,进入小程序管理页面。 - 在“开发管理”页面中,将请求的域名添加到`dd.http.post`等网络请求的合法域名列表中。 - 在开发阶段可以临时关闭域名校验,但上线前必须配置合法域名。 --- ###
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值