当前位置: 首页 > news >正文

企业做网站有什么好处郑州百度搜索优化

企业做网站有什么好处,郑州百度搜索优化,管理平台登录界面,苏州网页设计#1 问题描述 在基于Spring Boot的项目中实现了请求转发(使用 RestTemplate 的 exchange 方法)的功能,忽然在前端报net::ERR_CONTENT_DECODING_FAILED 200 (OK)的错误,后端及上游系统日志均显示请求已完成。 #2 原因探寻 上述错…

#1 问题描述

在基于Spring Boot的项目中实现了请求转发(使用 RestTemplate 的 exchange 方法)的功能,忽然在前端报net::ERR_CONTENT_DECODING_FAILED 200 (OK)的错误,后端及上游系统日志均显示请求已完成。

#2 原因探寻

上述错误字面意思为内容解码失败,就是说浏览器拿到后端数据后没办法正常解码。此时我们看看请求响应的编码

可以看到上游系统启用了响应压缩,然后中转系统读取方式为:

restTemplate.exchange(entity, String::class.java)

故当上游系统的响应启用压缩后,中转系统按String读取再返回给前端,浏览器拿到数据后通过响应头识别到是gzip编码则尝试解压,导致前面出现的异常。

#3 修复

要修复其实也很简单,在中转系统中用字节数组格式读取响应即可(兼容上游系统的各种格式的响应),完整代码如下:

class ServiceRoute {val logger = LoggerFactory.getLogger(javaClass)val restTemplate = RestTemplate().also {  }fun redirect(request:HttpServletRequest, response:HttpServletResponse, targetUrl:String, extraHeaders: Map<String, String?>?=null):ResponseEntity<ByteArray> {val entity = createRequestEntity(request, targetUrl, extraHeaders)return restTemplate.exchange(entity, ByteArray::class.java)}@Throws(URISyntaxException::class, IOException::class)private fun createRequestEntity(request: HttpServletRequest, url: String, extraHeaders: Map<String, String?>?): RequestEntity<*> {val httpMethod = HttpMethod.valueOf(request.method)val headers = parseRequestHeader(request)extraHeaders?.forEach { (k, v) -> headers.add(k, v) }//将原始请求转换为字节数组val body = StreamUtils.copyToByteArray(request.inputStream)return RequestEntity<Any>(body, headers, httpMethod, URI(url))}/*** 复制原始请求的 header 信息*/private fun parseRequestHeader(request: HttpServletRequest): MultiValueMap<String, String?> {val headers = HttpHeaders()val headerNames: List<String> = Collections.list(request.headerNames)for (headerName in headerNames) {val headerValues: List<String> = Collections.list(request.getHeaders(headerName))for (headerValue in headerValues) {headers.add(headerName, headerValue)}}return headers}
}

使用示例

@RequestMapping("route/**", name = "转发请求")
fun redirect(response:HttpServletResponse):ResponseEntity<*> {val path = request.servletPath.replace("/route/", "")return try{//自定义请求头val extraHeaders = mapof("from" to "中介系统")route.redirect( request, response, "http://localhost:8080/${path}", extraHeaders ).also {//此处可查看返回内容}}catch (e:Exception) {logger.error("[SERVICE-ROUTE] 转发失败", e)ResponseEntity(e.message, HttpStatus.INTERNAL_SERVER_ERROR)}finally {//此处可以做一些后续操作}
}
http://www.hkea.cn/news/474441/

相关文章:

  • 宁波有做网站的地方吗seo报价单
  • 深圳企业网站开发中国法律服务网app最新下载
  • 大连企业网站建站国外域名注册网站
  • 站长工具seo综合查询权重百度在线搜索
  • 伊犁网站建设评价怎样才能上百度
  • 房地产网站建设方案百度实名认证
  • 做外贸可以在哪些网站注册网络项目免费的资源网
  • 中国建设银行信用卡网站首页青岛关键词优化平台
  • 阿里云网站建设考试题目长沙网站推广服务公司
  • 甘肃建设项目审批权限网站俄罗斯搜索引擎yandex官网入口
  • 网站建设公司新员工培训ppt模板百度热门搜索排行榜
  • 仿魔客吧网站模板网址大全是ie浏览器吗
  • 网站产品后台界面怎么做湖南关键词排名推广
  • 网站数据每隔几秒切换怎么做的湖南百度seo排名点击软件
  • 网站制作先学什么百度新闻下载安装
  • 河南省网站建设哪家好免费观看行情软件网站进入
  • 粘合剂东莞网站建设体育热点新闻
  • 百度网站排名关键词整站优化培训网站建设
  • 网络平台代理seo外包 杭州
  • 东方头条网站源码免费推广软件工具
  • 北京网站建设公司分享网站改版注意事项流程优化四个方法
  • 案例学 网页设计与网站建设手机百度seo快速排名
  • 江门网站建设总部电话产品推广渠道有哪些
  • 网站建设全攻略站长之家ping检测
  • 导航网站 cmsgoogle chrome谷歌浏览器
  • wordpress看其他人博客优化师是做什么的
  • 现在哪个网站还做白拿2021小说排行榜百度风云榜
  • 网站流量seo提升seo排名的方法
  • 做html网站模板下载地址网站页面布局和样式设计
  • 公司网站邮箱费用磁力宅在线搜种子