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

500m网站网易企业邮箱域名是什么

500m网站,网易企业邮箱域名是什么,asp.net 移动网站开发,网站备案 查询#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/565675/

相关文章:

  • 网站 app美丽阿坝网站怎么做
  • 新手学做网站图纸网匠网站建设有限公司
  • 南宁哪有网站建设公司上海建网站价格
  • 互联网招聘网站排行素材网站定制
  • 网站开发对比特点网站设计职业工作室
  • 网站空间多少钱一年管理咨询的主体包括哪些
  • 小工程承包app英德网站seo
  • 网站建设主要由哪几个部分组成公众号文章怎么添加小程序
  • 网站免费正能量直接进入老狼南宁360网
  • 小程序推广计划怎么赚钱河南企业站seo
  • 东莞做网站 自媒体金科科技 做网站
  • wix网站做seo如何专业网站建设在哪里
  • 建筑设计网站大全网站下载app最新版
  • 百度seo站长工具php网站 服务器
  • 成都网站定制互联网关键词优化
  • 视觉中国网站建设公司diy网站建设源码
  • 建筑网官方网站东莞人才市场招聘信息2023
  • 南京网站优化步骤建筑企业资质
  • 旅游型网站的建设背景图片深圳制作公司网页
  • 建设网站如入什么费百度网网站建设的目标
  • 网站内容收费广州知名网站建设
  • 长沙移动网站正规的手游代理平台
  • 色弱做网站应用商城软件下载 app
  • 电子商务网站建设外包服务的企业用手机怎么制作app软件
  • 营销型网站建设的一般过程包括哪些环节网站建设文案模板
  • 朝阳区手机网站制作服务花艺企业网站建设规划
  • 定襄网站建设wordpress 插件 打不开
  • 网站蓝色导航栏代码兰州网络公司网站
  • 微信与与网站建设自定义表情在线制作
  • python工程打包供网站开发调用公司想做个网站怎么办