• [技术干货] HTTP 缓存与 Service Worker 的协调机制
     一、二者的基本定位与作用范围HTTP 缓存层级:浏览器内置的网络层缓存机制触发时机:在发起网络请求前,由浏览器根据响应头(如 Cache-Control、ETag)自动判断是否使用本地副本控制权:由服务器通过响应头配置,开发者无法在客户端动态干预单次请求的缓存行为适用范围:所有通过 fetch 或 <img>、<script> 等标签发起的资源请求Service Worker层级:运行在浏览器后台的独立脚本,位于网络请求与页面之间触发时机:当注册并激活后,所有同源请求(除某些例外)都会先经过 Service Worker 的 fetch 事件监听器控制权:完全由开发者通过 JavaScript 逻辑控制,可自定义缓存策略、实现离线回退、拦截请求等适用范围:仅限于已注册 Service Worker 的作用域内的请求二、请求处理的完整流程当一个页面发起资源请求(例如 fetch('/api/data'))时,浏览器的处理顺序如下:检查是否受 Service Worker 控制若当前页面在已激活的 Service Worker 作用域内,则进入下一步;否则直接走标准 HTTP 缓存流程。触发 Service Worker 的 fetch 事件浏览器将请求传递给 Service Worker 的 self.addEventListener('fetch', ...) 回调。Service Worker 决定如何响应开发者在此处编写逻辑,常见做法包括:直接从自定义 Cache Storage 中返回响应(完全绕过网络)先查缓存,未命中再发网络请求(Cache-First)先发网络请求,失败时回退到缓存(Network-First)同时请求网络和缓存,以最快响应为准(Race)显式调用 fetch(event.request) 发起实际网络请求若 Service Worker 调用 fetch(),则进入 HTTP 缓存流程此时,浏览器会像普通请求一样:检查 HTTP 强缓存(Cache-Control: max-age)若过期,则进行协商缓存(发送带 If-None-Match 的请求)最终可能返回 200(新内容)或 304(使用本地缓存)关键结论:Service Worker 位于 HTTP 缓存之上。只有当 Service Worker 主动调用 fetch() 时,HTTP 缓存机制才会被触发。三、典型协作模式示例模式 1:静态资源 —— 利用 HTTP 缓存 + Service Worker 预缓存// sw.jsconst CACHE_NAME = 'v1-static';self.addEventListener('install', (event) => { // 安装阶段预缓存关键静态资源 event.waitUntil( caches.open(CACHE_NAME).then((cache) => { return cache.addAll([ '/', '/styles/main.css', '/scripts/app.js', '/images/logo.png' ]); }) );});self.addEventListener('fetch', (event) => { // 对静态资源优先使用预缓存 if (isStaticResource(event.request.url)) { event.respondWith( caches.match(event.request).then((response) => { return response || fetch(event.request); // 未命中则走网络(触发 HTTP 缓存) }) ); }});在此模式下:首次访问时,资源通过 HTTP 缓存策略加载(如 max-age=31536000)Service Worker 在后台预缓存这些资源后续访问直接从 Cache Storage 返回,完全绕过 HTTP 缓存和网络即使用户离线,也能正常加载模式 2:API 接口 —— Service Worker 控制 + 尊重 HTTP 缓存语义self.addEventListener('fetch', (event) => { if (event.request.url.includes('/api/')) { event.respondWith( caches.open('api-cache').then((cache) => { return fetch(event.request).then((networkResponse) => { // 将响应存入自定义缓存(注意:需克隆) cache.put(event.request, networkResponse.clone()); return networkResponse; }).catch(() => { // 网络失败时尝试返回缓存(即使过期) return cache.match(event.request); }); }) ); }});这里,fetch(event.request) 会触发标准 HTTP 缓存流程:若 HTTP 缓存有效,fetch() 直接返回缓存内容(无网络请求)若需验证,浏览器自动发送带 If-None-Match 的请求Service Worker 仅负责兜底和持久化,不干扰 HTTP 缓存语义四、需要注意的关键细节1. Service Worker 不会自动继承 HTTP 缓存策略Cache Storage 是独立于 HTTP 缓存的存储系统。即使服务器返回了 Cache-Control: max-age=3600,一旦资源被存入 caches,其有效期完全由开发者逻辑控制。因此,需自行实现缓存过期清理机制,例如:// 清理超过 1 小时的 API 缓存async function deleteOldCaches() { const now = Date.now(); const requests = await caches.keys(); for (const req of requests) { const response = await caches.match(req); const time = response.headers.get('x-cache-time'); if (time && (now - time) > 3600000) { caches.delete(req); } }}2. 避免双重缓存导致版本不一致若同时启用长期 HTTP 缓存和 Service Worker 预缓存,需确保资源更新时二者同步失效。推荐做法:静态资源使用内容哈希命名(如 app.a1b2c3.js)Service Worker 更新时清除旧缓存(在 activate 事件中)self.addEventListener('activate', (event) => { event.waitUntil( caches.keys().then((keys) => { return Promise.all( keys.map((key) => { if (key !== CURRENT_CACHE_NAME) { return caches.delete(key); } }) ); }) );});3. 开发者工具中的缓存行为差异在浏览器 DevTools 中勾选“Disable cache”时,仅禁用 HTTP 缓存,不影响 Service Worker 的 Cache Storage。调试 PWA 时需手动更新或注销 Service Worker。六、结语HTTP 缓存与 Service Worker 并非互斥,而是分层协作的关系。HTTP 缓存提供标准化、高效的内容新鲜度管理,适用于大多数常规场景;Service Worker 则赋予开发者细粒度的控制能力,用于实现离线优先、智能预加载等高级功能。合理协调二者,既能享受浏览器原生缓存的性能优势,又能构建出具备强大离线能力和用户体验的现代 Web 应用。掌握这一协作机制,是迈向高质量 PWA 开发的关键一步。
  • [技术干货] 一次HTTP请求
    当在浏览器地址栏输入网址并回车后,浏览器会通过以下步骤加载网页:‌域名解析(DNS 查询)‌‌缓存层查找‌:浏览器首先检查本地缓存(如浏览器缓存、系统缓存)、hosts 文件以及网络运营商的 DNS 缓存中是否存在该域名的 IP 地址。‌‌‌‌‌递归查询‌:若缓存中未找到对应记录,浏览器会向本地 DNS 服务器发起请求。本地 DNS 服务器会向上级 DNS 服务器(如根服务器、顶级域名服务器)递归查询,最终获取 IP 地址并缓存以备后续使用。‌‌‌‌以下是关于浏览器输入URL后发生的事情:‌建立 TCP 连接‌‌三次握手‌:浏览器与服务器通过 TCP 三次握手建立连接。客户端发送 SYN 包,服务器响应 SYN-ACK,客户端再发送 ACK 确认连接建立。‌‌‌‌‌HTTPS 额外步骤‌:若使用 HTTPS(默认端口 443),还需进行 TLS 握手以协商加密参数和验证服务器身份。‌‌‌‌以下是关于浏览器建立TCP连接后发生的事情:‌发送 HTTP 请求‌‌构建请求‌:浏览器向服务器发送 HTTP 请求(如 GET/POST),包含 URL、头部信息(如 User-Agent、Cookies)及请求体。‌‌2‌‌3‌重定向处理‌:若服务器返回 3xx 重定向状态码,浏览器会自动重新发起请求。‌‌2以下是关于浏览器发送HTTP请求后发生的事情::‌优化建议‌:若网页加载缓慢,可尝试更换 DNS 服务器(如阿里 DNS223.5.5.5或腾讯 DNS119.29.29.29),并清空浏览器缓存或重启设备以提升解析效率。‌‌4  当你在浏览器中输入一个网址并按下回车键后,会发生一系列复杂但有序的过程,最终将网页内容呈现在你的屏幕上。这些过程主要包括域名解析、建立HTTP连接、发送HTTP请求、服务器响应以及浏览器渲染等步骤。下面我将详细解释这些过程:1. 域名解析: - 浏览器首先会将你输入的域名解析成计算机可理解的IP地址。 - 域名解析的过程会依次检查浏览器缓存、操作系统缓存、电信运营商缓存以及公共DNS缓存。 - 如果在所有缓存中都找不到对应的IP地址,浏览器会向DNS服务器发出请求,DNS服务器会从根服务器、顶级域名服务器和权威DNS服务器层层查找,最后返回IP地址。2. 建立HTTP连接: - 在获取到IP地址后,浏览器会与服务器建立TCP连接,这通常通过三次握手过程来完成。 - 三次握手确保了客户端和服务器之间的连接是可靠的,可以开始传输数据。3. 发送HTTP请求: - 连接建立好后,浏览器会向服务器发送一个HTTP请求报文,其中包含了请求的资源路径、请求方法等信息。 - 常见的HTTP请求方法包括GET和POST,其中GET方法用于请求网页资源。4. 服务器响应: - 服务器接收到请求报文后,会处理请求并返回一个HTTP响应报文。 - 响应报文中包含了资源内容、响应状态码等信息。状态码如200表示成功,404表示资源未找到,500表示服务器内部错误等。5. 浏览器渲染: - 浏览器接收到响应报文后,会对资源内容进行解析并渲染网页。 - 渲染过程包括处理HTML以构建DOM树、处理CSS以构建CSSOM树、以DOM和CSSOM为基础构建渲染树、进行布局计算以及将节点绘制到屏幕上。6. 断开HTTP连接(不一定会马上断开): - 当客户端和服务器之间数据传输完成后,会通过四次握手过程来断开连接。 - 四次握手确保了双方都已确
  • [技术干货] 使用httpclient调用第三方接口返回javax.net.ssl.SSLHandshakeException异常
    1. 踩坑经历最近做了个需求,需要调用第三方接口获取数据,在联调时一直失败,代码抛出javax.net.ssl.SSLHandshakeException异常,具体错误信息如下所示:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target2.原因分析因为调用第三方接口的代码是复用项目中原有的工具类(基于httpclient封装),所以在确认完传参没问题后,第一时间排除了编码问题。然后开始怀疑第三方提供的接口地址(因为竟然是IP+端口访问),在和第三方确认没有域名访问后,在浏览器里输入第三方的接口地址,发现证书有问题:又使用Postman调用第三方接口,也是失败,提示自签名证书:通过以上分析,可以发现出现该问题的根本原因是Java客户端不信任目标服务器的SSL证书,比如这个第三方使用的自签名证书。3.解决方案解决方案一般有2种,第1种方案是将服务器证书导入Java信任库,第2种方案是绕过SSL验证,这里采用第2种方案。首先,新建HttpClient工具类:import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; public class HttpClientUtils { public static CloseableHttpClient createIgnoreCertClient() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, new TrustManager[]{new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted(X509Certificate[] certs, String authType) { } }}, new java.security.SecureRandom()); SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE); return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build(); } }然后将原来声明httpClient的代码改为如下所示:CloseableHttpClient httpClient = HttpClientUtils.createIgnoreCertClient();注意事项:确保项目中引入了httpclient依赖:<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>转载自https://www.cnblogs.com/zwwhnly/p/18795523
  • [问题求助] 【OTA求助】stm32+bc260y用mqtt接入,发送get报文错误
    这是代码,不管怎么改,发送AT+QISEND指令都返回ERROR,求大佬火眼金睛指正!!!#define curl_part1       "AT+QISEND=0,308,\"GET https://124.70.218.131:8943/iodm/dev/v2.0/upgradefile/applications/176c8a50519243d4a8142cdfc821b6b0/devices/67c9b83e4c58cc795ad8c350_866330074008487/packages/67d2da89e89983487391583f\r\nContent-Type: application/json\r\nAuthorization: Bearer "#define curl_part2       "\r\n\""  
  • [介绍/入门] 既然UDP比TCP传输效率高,为啥HTTP不采用UDP协议,然后自定义一个校验机制
    既然UDP比TCP传输效率高,为啥HTTP不采用UDP协议,然后自定义一个校验机制
  • [问题求助] 接收POST上传的图片保存到服务器时出现格式不对的错误
    从模拟器相册中选择一个JPG图片,通过POST方式上传到服务器,服务器端用servlet负责接收,用servletInputStream输入流接收上传的图片内容,后来发现保存的图片格式不对,不知道哪里出了问题?
  • [技术干货] HTTP请求首部字段及响应首部字段详解
    HTTP请求方法包括:POST、GET、PUT 、DELETE、OPTIONS等对于除GET请求以外的HTTP请求如果存在跨域请求浏览器必须首先使用OPTIONS方法询问服务端是否允许跨域请求,然后才发起真正的请求,OPTIONS请求称为预检请求HTTP请求首部字段,预检请求发送给服务器Origin预检请求或实际请求的原域名不管是否为跨域请求Origin字段总是被发送Access-Control-Request-Method预检请求将实际请求的HTTP方法告诉服务器Access-Control-Request-Headers预检请求将实际请求所携带的首部字段告诉服务器HTTP响应首部字段Access-Control-Allow-Origin服务器允许跨域访问的域对于不需要携带身份凭证服务器可以配置该属性为“*”1Access-Control-Allow-Origin: www.baidu.comAccess-Control-Allow-Methods服务器允许跨域请求的方法用于预检请求的响应Access-Control-Allow-Headers服务器允许跨域请求携带的首部字段用于预检请求的响应可以自定义1Access-Control-Allow-Headers: app-idAccess-Control-Allow-Credentials服务器允许跨域请求携带身份凭证(cookies、authorization headers、TLS client certificates等)如果允许,设置为true如果不允许则不需要设置,因为此属性只有true一个可选值并且对于附带身份凭证的请求Access-Control-Allow-Origin不能使用通配符1Access-Control-Allow-Credentials: trueAccess-Control-Expose-Headers服务器允许浏览器访问的头默认情况下:浏览器只能获取到Cache-Control、Content-Language、Content-Type、Expires、Last-Modified等Access-Control-Max-Age服务器设置OPTIONS预检的缓存时长(以秒为单位)在缓存时长内这个域不再发起预检请求可以直接发起真正的HTTP请求1Access-Control-Max-Age: 28800
  • [技术干货] HTTPS对比HTTP协议
    HTTPS 的优点HTTPS能够取代HTTP,主要是因为HTTPS在HTTP的基础上增加了安全性,提供了更加安全的数据传输方式。以下是HTTPS相较于HTTP的主要优势:数据安全性:HTTPS使用加密算法(如SSL/TLS)对传输的数据进行加密,保护数据在传输过程中不被窃取和篡改。这一特点使得HTTPS在数据安全性上大大优于HTTP,因为HTTP的数据传输是明文的,容易被黑客截获和篡改。身份认证:HTTPS通过证书验证服务器身份,确保用户与正规服务器建立连接,防止恶意伪造网站。这种身份认证机制有效避免了钓鱼网站和假冒网站的出现,增加了网络使用的安全性。完整性保护:HTTPS使用数字签名来检测数据是否被篡改,保证数据的完整性。即使数据在传输过程中被截获,攻击者也无法篡改数据而不被检测到。更高的搜索引擎排名:搜索引擎更倾向于显示使用HTTPS的网站,因为HTTPS提供更安全和可信的用户体验。这有助于提升网站的可见性和信誉。关于发送同样的网页数据量,HTTPS相较于HTTP会增加一定的数据量,因为HTTPS需要传输额外的加密和验证信息。然而,这种增加通常很小,一般不会对网络性能造成显著影响。具体的增加量取决于使用的加密算法和密钥长度等因素,但通常不会超过原始数据量的几个百分点。HTTPS证书不可信任可能的原因至于有些网址会提示证书不可信任,这通常是由以下几个原因造成的:证书已过期:网站的SSL/TLS证书有一个有效期限,如果证书已过期,浏览器将不再信任该证书。证书颁发机构不受信任:浏览器内置了一份受信任的证书颁发机构列表,如果网站的证书是由一个不在此列表中的机构颁发的,浏览器将不信任该证书。证书链不完整:SSL/TLS证书通常包含一个证书链,用于证明证书的有效性。如果证书链中的某个环节缺失或损坏,浏览器将无法验证证书的有效性。域名不匹配:如果证书中的域名与实际访问的域名不匹配,浏览器将认为证书无效。在解决证书不可信任的问题时,网站管理员应该检查证书的有效期、颁发机构、证书链和域名等信息,确保所有信息都正确无误。同时,用户也可以尝试更新浏览器或操作系统,以获取最新的受信任证书颁发机构列表。
  • [技术干货] cpp-httplib: 轻量级、高性能的C++ HTTP/HTTPS客户端和服务器库-转载
    cpp-httplib: 轻量级、高性能的C++ HTTP/HTTPS客户端和服务器库 项目简介 cpp-httplib 是一个轻量级且高效的 C++ HTTP/HTTPS 客户端和服务器库。它由 Hideaki Sone(yhirose)开发,并在 MIT 许可下发布。该项目的主要目标是提供一种简单易用的方式,在 C++ 应用程序中实现 HTTP 和 HTTPS 功能。  项目仓库地址:https://gitcode.com/yhirose/cpp-httplib  应用场景与功能 cpp-httplib 可用于以下场景:  开发基于 HTTP 或 HTTPS 的 RESTful API 服务。 构建简单的 Web 服务器,如静态文件服务器或 WebSocket 服务器。 在 C++ 应用程序中与其他 Web 服务进行通信(例如发送 HTTP 请求获取数据)。 cpp-httplib 支持以下主要特性:  高性能:cpp-httplib 使用多线程处理并发请求,以提高服务器性能。 简单易用:API 设计简洁明了,易于集成到现有 C++ 项目中。 支持 HTTP/1.1 和 HTTPS 协议。 支持 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS 等 HTTP 方法。 支持自定义响应头和请求头。 支持读取和设置Cookie。 支持上传文件。 支持代理服务器。 支持超时设置。 支持 SSL/TLS 加密。 支持 Windows、Linux、MacOS 等多种平台。 快速入门与示例 安装步骤 首先,克隆项目到本地:  git clone https://gitcode.com/yhirose/cpp-httplib.git 然后将 cpp-httplib 目录添加到你的 C++ 工程中。  示例代码 下面是一些基本示例,展示了如何使用 cpp-httplib 来创建 HTTP 服务器和发送 HTTP 请求。  创建 HTTP 服务器 #include "httplib.h"  using namespace std; using namespace httplib;  int main() {   Server svr;    svr.Get("/hello", [](const Request &req, Response &res) {     res.set_content("Hello World!", "text/plain");   });    if (svr.listen("0.0.0.0", 8080)) {     cout << "Server is running at http://localhost:8080" << endl;   } else {     cerr << "Failed to start server." << endl;   }    return 0; } 发送 HTTP 请求 #include "httplib.h"  using namespace std; using namespace httplib;  int main() {   Client cli("httpbin.org");    auto res = cli.Get("/get");    if (res && res->status == 200) {     cout << "Response body:" << endl;     for (auto &line : res->body) {       cout << line << endl;     }   } else {     cerr << "Request failed!" << endl;   }    return 0; } 结论 cpp-httplib 提供了一个高效、轻量级的解决方案,用于实现 C++ 中的 HTTP 和 HTTPS 功能。无论您需要创建 RESTful API 服务还是在您的应用程序中与其他 Web 服务进行交互,cpp-httplib 都是一个值得尝试的选择。立即加入并开始使用吧! ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/gitblog_00086/article/details/136756472 
  • [问题求助] 同一页面小模块跳转
    各位大神,下面两个页面怎么设置在同一页面进行小跳转(就是点击图片可以直接跳转到下面产品分类,大页面不变)
  • [技术干货] 短链接的背后故事:为互联网用户带来的便捷与安全【转】
    一、短链接的起源短链接是一种将长URL转换为短、简洁的网址的技术。它的起源可以追溯到互联网发展的早期,当时长URL的使用给用户带来了繁琐和不便。为了解决这个问题,短链接技术应运而生。短链接 | 一个覆盖广泛主题工具的高效在线平台(amd794.com)cid:link_0二、短链接解决了什么问题短链接的主要目的是解决长URL带来的繁琐和不便。长URL不仅难以记忆和分享,而且在某些场景下可能会被截断或破坏。短链接通过将长URL转换为短、简洁的网址,使得用户可以更方便地分享和访问链接。三、短链接对现在的影响和作用链接分享:短链接在社交媒体和移动设备上的广泛应用,使得用户可以更轻松地分享链接。短链接不仅节省了字符空间,还可以提高链接的可读性和美观性。链接跟踪:短链接技术还可以用于链接跟踪和分析。通过在短链接中添加跟踪参数,可以追踪链接的点击量、来源和转化率等数据,为营销和分析提供有价值的信息。链接管理:短链接可以简化链接管理的流程。通过使用短链接服务,用户可以轻松地创建、编辑和管理大量的链接,提高链接管理的效率和便利性。链接安全:短链接技术可以提高链接的安全性。短链接服务通常会提供链接验证和防止恶意链接的功能,保护用户免受恶意网站和钓鱼攻击的威胁。四、短链接的应用领域社交媒体:短链接在社交媒体平台上被广泛应用,方便用户分享和点击链接,同时提供链接跟踪和分析的功能。移动应用:短链接在移动应用中用于分享和打开链接,可以提高用户体验和链接的可用性。营销活动:短链接在营销活动中起到重要作用,可以追踪链接的点击量和转化率,帮助营销人员评估活动效果。链接管理工具:短链接服务可以用于链接管理工具,帮助用户创建、编辑和管理大量的链接。五、总结短链接技术的诞生解决了长URL带来的繁琐和不便,对互联网用户的链接分享和访问带来了便利。短链接在社交媒体、移动应用、营销活动和链接管理等方面发挥着重要作用。同时,短链接技术还提供了链接跟踪和分析的功能,帮助用户评估链接的效果和营销活动的效果。随着互联网的发展,短链接技术仍然在不断创新和发展,为用户提供更便捷、安全和高效的链接管理和分享体验。转载自https://www.cnblogs.com/Amd794/p/18034385
  • [技术干货] Http请求的响应头中设置编码格式【转】
    使用Netty提供的Http服务,org.jboss.netty.handler.codec.http.HttpResponse设置编码格式    HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);         response.headers().set("Content-Type", "application/json;charset=utf-8");Content-Type字段简介:MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。常见的媒体格式类型如下:        text/html : HTML格式        text/plain :纯文本格式              text/xml :  XML格式        image/gif :gif图片格式            image/jpeg :jpg图片格式        image/png:png图片格式   以application开头的媒体格式类型:       application/xhtml+xml :XHTML格式       application/xml     : XML数据格式       application/atom+xml  :Atom XML聚合格式           application/json    : JSON数据格式       application/pdf       :pdf格式         application/msword  : Word文档格式       application/octet-stream : 二进制流数据(如常见的文件下载)       application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)   另外一种常见的媒体格式是上传文件之时使用的:      multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式————————————————版权声明:本文为CSDN博主「琴瘦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_32293345/article/details/112466350
  • [技术干货] HTTP响应的状态码415解决【转】
    原因HTTP响应返回415状态码,错误信息为“Unsupported Media Type”,也就是服务器无法处理请求附带的媒体格式,解决方法就是在请求头中加入Content-Type指定媒体格式类型(也可以理解成编码格式)。另外在请求头中添加Accept可指定客户端能接受的内容类型。解决解决415状态码,可以通过在请求头中设置Content-Type对应的媒体类型,比如:在请求头中添加:contentType : "application/json;charset=utf-8",
  • [其他类问题] HTTP API接口召集会议失败
    召集会议接口的参数较多,容易出错,任意参数有问题都会导致接口调用失败,现分别提供一代屏和二代屏的样例接口参数作为参考。注意事项:ucVoiceSwitchLimit:一代上从0开始,二代要求从1开始,否则参数校验不通过 uwBaudRate:一代传入WEB_RequestCallRateDataAPI接口的查询结果,二代可写死为3200 astTempSiteInfo中的ucCallType:枚举值如下,一代传入WEB_RequestCallTypeDataAPI接口的查询结果,二代可直接写死为10 0:ISDN呼叫 1:V35呼叫 2:E1呼叫 3:H.323呼叫 4:电话(纯音频) 5:PSTN(窄带) 6:T1呼叫 7:4E1呼叫 8:SIP呼叫 9:SIP Phone呼叫 10:auto自动切换呼叫类型
  • [问题求助] ccgateway的transfer三方转接口不保持情况问题求助
    【问题来源】 浙江110【问题简要】transfer三方转接口不保持情况下的测试问题: 1.第三方接通挂断后,坐席无法三方第四个号码,接口报错Get call data failed 2.无法加入第四方或更多方进行通话,接口报错Communications error【问题类别】 CTI平台提供的cc-gateway接口【AICC解决方案版本】 AICC 22.200 ,浙江110版本4月9日整体升级过