• [介绍/入门] 既然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",
  • [问题求助] UAP对阿里tts文本放音,通过ivr调取tts放音失败
    TTS or ASR license not enouth result=3
  • [其他类问题] 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日整体升级过
  • [最佳实践] REST接口访问Ranger最佳实践(获取,创建,修改策略)
    描述Ranger服务提供了集中式的权限管理框架,可以对HDFS、HBase、Hive、Yarn等组件进行细粒度的权限访问控制,并且提供了Web UI方便Ranger管理员进行操作,官方Rest API文档参考cid:link_0应用场景业务开发过程中,经常使用rest接口访问Ranger原生界面信息进行管理。 为了节省时间,可使用curl命令或者java样例代码进行策略的创建和修改。关键点1.交互过程使用kerberos认证,http访问场景下也叫做spnego认证2.同组件原生界面交互时需要跟服务端做ssl3.以最简单的GET,post,put请求为例分别获取、创建、修改对应组件策略4.对应用户名需使用组件系统用户加域名5.认证文件rangeradmin.keytab文件获取路径:/home/huawei/Bigdata/FusionInsight_HD_8.2.0/install/FusionInsight-Ranger-2.0.0/Ranger/ranger-admin/bin/keytabs/rangeradmin.keytab ,放置于conf目录下6.获取对应实例对应的直接ip以及端口,登录集群oms节点后台查看whitelist.txt文件,样例路径为:/opt/huawei/Bigdata/om-server/Apache-httpd-2.4.48/conf/whitelist.txt使用Curl命令进行ranger策略的修改和创建GET 获取策略(ip填写ranger实例ip)curl -i -k --user rangeradmin:password -H 'Content-type':'application/json' https://ip:21401/service/plugins/services/3?_=1678848744856 -X GETPost 创建策略curl -i -k --user rangeradmin:passoword -H 'Content-type':'application/json' https://ip:21401/service/plugins/policies/ -X POST -d '{"id":72,"guid":"1c4013e6-7cbc-49b9-ae60-28cf524a72c5","isEnabled":true,"createdBy":"rangeradmin","updatedBy":"rangeradmin","createTime":1678921726136,"updateTime":1678921726137,"version":1,"service":"Hive","name":"test","policyType":0,"policyPriority":0,"description":"","resourceSignature":"4032c2c9d3f55ceae24e0c3430c87af449f2d4d2eaf79c174186ad6eb18bb34e","isAuditEnabled":true,"resources":{"database":{"values":["eason"],"isExcludes":false,"isRecursive":false},"column":{"values":["*"],"isExcludes":false,"isRecursive":false},"table":{"values":["*"],"isExcludes":false,"isRecursive":false}},"policyItems":[{"accesses":[{"type":"select","isAllowed":true}],"users":["testuser"],"groups":["public"],"roles":[],"conditions":[],"delegateAdmin":false}],"denyPolicyItems":[],"allowExceptions":[],"denyExceptions":[],"dataMaskPolicyItems":[],"rowFilterPolicyItems":[],"serviceType":"hive","options":{},"validitySchedules":[],"policyLabels":[],"zoneName":"","isDenyAllElse":false,"isDefaultPolicy":false}'PUT 修改策略(id为需要修改的策略id)curl -i -k --user rangeradmin:password -H 'Content-type':'application/json' https://ip:21401/service/plugins/policies/id -X PUT -d '{"id":76,"guid":"1c4013e6-7cbc-49b9-ae60-28cf524a72c5","isEnabled":true,"createdBy":"rangeradmin","updatedBy":"rangeradmin","createTime":1678921726136,"updateTime":1678921726137,"version":1,"service":"Hive","name":"test","policyType":0,"policyPriority":0,"description":"","resourceSignature":"4032c2c9d3f55ceae24e0c3430c87af449f2d4d2eaf79c174186ad6eb18bb34e","isAuditEnabled":true,"resources":{"database":{"values":["eason"],"isExcludes":false,"isRecursive":false},"column":{"values":["*"],"isExcludes":false,"isRecursive":false},"table":{"values":["*"],"isExcludes":false,"isRecursive":false}},"policyItems":[{"accesses":[{"type":"select","isAllowed":true}],"users":["testuser","lyf"],"groups":["public","hive"],"roles":[],"conditions":[],"delegateAdmin":false}],"denyPolicyItems":[],"allowExceptions":[],"denyExceptions":[],"dataMaskPolicyItems":[],"rowFilterPolicyItems":[],"serviceType":"hive","options":{},"validitySchedules":[],"policyLabels":[],"zoneName":"","isDenyAllElse":false,"isDefaultPolicy":false}'使用JAVA样例代码创建和修改策略修改代码,设置参数url和json,传入HttpPost String json = ""; // 设置参数到请求对象中 HttpResponse response = Subject.doAs(sb, new PrivilegedExceptionAction<HttpResponse>() { @Override public HttpResponse run() throws Exception { StringEntity entity = new StringEntity(json, "UTF-8"); entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); HttpPost httpPost = new HttpPost(url); System.out.println(httpPost); httpPost.setEntity(entity); return httpClient.execute(httpPost); } });对应结果获取策略:创建策略:页面对应策略为: 修改策略:页面修改策略为: 注:修改策略时,put请求携带的json串对应的id也需进行修改,匹配所需修改的策略
  • [问题求助] ccgateway的内部求助里的三方求助能否求助外部的号码
    【问题来源】 浙江110【问题简要】 内部求助的innerhelp接口的三方求助功能里,请问第三方能否是手机号;参数dstaddress文档描述是工号或者技能组。【问题类别】 CTI平台提供的cc-gateway接口【AICC解决方案版本】 AICC 22.100  
  • [ROMA 20.0] for循环内调用httpExecutor.callPostAPI函数,循环一次就结束了??
    for( var i = 0 ; i < 10; i++ ){           terid = test["data"][i]["terid"];           url = 'http://**.**.*.*:***/api/v1/basic/gps/last';           params = {             'key': key,             'terid': [terid]           };           try {             // 调用请求并返回结果信息             strtmp = httpExecutor.callPostAPI(url,JSON.stringify(headers),JSON.stringify(params),ContentType);             strtmp += terid;                      } catch (e) {strtmp="catch";}                           }这个for循环内调用httpExecutor.callPostAPI函数,循环一次就结束了??