【发布时间】:2018-03-02 04:29:08
【问题描述】:
调查网络资源的行为我发现有一个 POST 请求(如 Web Inspector 中所述)以 XHR (AJAX) 形式发出,带有一些参数和请求标头。其中有一个 X-Requested-With: XMLHttpRequest 表示请求是 AJAX。
当我尝试使用 JMeter 或 Curl 发出相同的请求时,我收到一条错误消息,告诉您以下内容(提供所有必要的标头):
不支持请求方法“POST”
我有我感兴趣的应用和服务的来源,其定义如下:
@Controller
@RequestMapping(value = "/myrestservice")
public class MyRestServiceController {
// some code goes here
@RequestMapping(value = "/get", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public Map<String, DataDTO> getRestServiceResponse(@RequestParam("list") final List<String> itemsList, final Model model)
所以它必须接受 POST 请求。它在运行时确实,但它不适用于我尝试手动提出这样的请求。
这是从查看结果树截取的请求: POST https:${address-goes-here}/productstock/get/
POST 数据: CSRFToken=720fe025-d511-4a5e-ab17-d1ea8e0b0aa3&productList=productList%3D000000000010000545%2C000000000010000553%2C000000000010012169
Cookie 数据: JSESSIONID=60409DB1AFD720283100BCA212CD42DE.app11; megapolisstorefrontRememberMe=cGV0cjE0NzhAbWFpbC5ydToxNTIwMjQzMjExMzc5Ojk2Z> TkzN2FlNzY5MDk5NmY4ZDk5N2JhMTQ5MmEzYmI5; > 加速器SecureGUID=ca22a2f520a00f5cc3efa3acb6599a5f0e081c85
请求标头:连接:保持活动接受:应用程序/json, 文本/javascript
X-Requested-With:XMLHttpRequest 内容类型: 应用程序/x-www-form-urlencoded; charset=UTF-8 来源: ${地址到这里}
推荐人: ${address-goes-here}/%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3/%D0%9D%D0%B0%D0%BF %D0%B8%D1%82%D0%BA%D0%B8/%D0%AD%D0%BD%D0%B5%D1%80%D0%B3%D0%B5%D1%82%D0%B8% D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BD%D0%B0%D0%BF%D0%B8%D1%82%D0%BA%D0 %B8/c/2006
内容长度:147
主机:${address-goes-here}
用户代理: Apache-HttpClient/4.5.3 (Java/1.8.0_112)
【问题讨论】:
-
我猜你必须把正确的内容类型标题
Content-Type: application/json -
你能展示你的工作(在网络检查器中)而不是在 JMeter 请求中工作吗?
-
好吧,正如我所写 - 所有必要的标题都在那里,包括“Accept: application/json”和“Content-Type: application/x-www-form-urlencoded; charset=UTF-8”
-
你能显示JMeter的截图吗(Ctrl+G)。这可能是标题变量中的拼写错误或误解
标签: spring post jmeter xmlhttprequest