今日问题
先看一段日志输出:
POST /upload HTTP/1.1
cookie: JSESSIONID=39E2FDADEAEB955EAFF9B91CDD827D07
postman-token: 165e07cd-8f52-4988-99a8-9d71f3978b1c
host: 127.0.0.1:8080
content-type: multipart/form-data; boundary=--------------------------874425391893936909568582
cache-control: no-cache
accept-encoding: gzip, deflate, br
user-agent: PostmanRuntime/7.28.1
accept: */*
Connection: close
Content-Length: 123
--IVs5UYwiM2X9kWjmlHJDZhh_2AJFAEwA9
Content-Disposition: form-data; name="head"
--IVs5UYwiM2X9kWjmlHJDZhh_2AJFAEwA9
Content-Disposition: form-data; name="body"
ssss
--IVs5UYwiM2X9kWjmlHJDZhh_2AJFAEwA9--
简单描述一下问题。
工程需要做一个代理。就是很简单收到东西再转发出去。
但是代理收到了请求。转发后也收到了东西。见上面的日志 是socket输出的。
但是request 的 Parameter就是什么也输出不出来。
最后发现。是因为代理在转发时候将content-type 获取后也转发了出来。需要注意的是注意日志中的内容
content-type: multipart/form-data; boundary=--------------------------874425391893936909568582
与下面的
--IVs5UYwiM2X9kWjmlHJDZhh_2AJFAEwA9
是不一样的。 主要是boundary 是通过转发获取的。
而下面的是通过httpclient创建的。
最终导致了 request 获取不到Parameter
解决办法再代理进行转发的时候过滤到contenttype就行了
总结一下。
获取不到数据的大致问题
- Parameter 压根就没有
- content type 类型不匹配 ,举例你传的json 用的form 肯定收不到
- boundary 不一致导致【今天碰见的】
剩下再总结