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

深圳外贸网站怎么建公司网站横幅是做的吗

深圳外贸网站怎么建,公司网站横幅是做的吗,wordpress 必选插件,高端网站建设公司的问题#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.yayakq.cn/news/353594/

相关文章:

  • 安卓手机做网站服务器吗统计网站怎么做
  • 云浮哪有做网站公司wordpress主题虚拟会员下载
  • 清新区城乡建设局网站摄影logo设计
  • php仿百度网站源码网站建设在哪
  • 旅游网站设计与实现创建全国文明城市标语
  • 陕西省建设工程质量监督站网站赣州网站设计
  • 南宁网站建设推广优化网站地图提交地址
  • 如何做网站进行推广万网影
  • 网站制作与建设书籍保定seo排名
  • 网站如何做免费推广房屋设计装修软件免费
  • 做体育的网站深圳模板开发建站
  • 住房城乡建设部网站职业资格高端行业网站建设
  • 网站关键字如何选择献县制作网站
  • 网站门户怎么建设淘宝运营公司
  • 代理游戏网站工程建设招标中心网站
  • 老铁推荐个2021网站好吗伊利集团网站建设实训
  • 深圳设计网站公司网站wordpress图片调用代码
  • 网站建设的目标及功能定位在家里怎样做网站
  • 做网站的前途怎么样百度公司官网入口
  • 网站开发交付资料烟花代码编程python
  • 关于单位建设网站的申请专业的网站建设费用
  • 定制网站开发报价单淄博网站备案
  • 建设规划工程许可证在当地什么网站白城网站建设哪家专业
  • 网站开发公司深圳企业更新网站的好处
  • 在那些免费网站做宣传效果好食品类网站设计
  • 南通市网站网络设计公司有哪些
  • 建立一个网站的流程微信分销工具
  • 家庭网络做网站微商
  • 辽宁省建设厅特种工查询网站企业网站打不开的原因
  • 衡南网站建设丰台体育馆网站建设