用cURL重现Ajax请求
问题描述:
我想用cURL重现一个Ajax请求,但总是失败。 服务器根本没有发送发送的数据(以下示例中的my_data)。用cURL重现Ajax请求
curl \
--request POST \
--header 'Content-type: application/json' \
--header 'X-Requested-With: XMLHttpRequest' \
--url 'http://example.org/ajax_call' \
--data '{"my_data":"data_value"}'
我也试过:
curl \
--request POST \
--header 'Content-type: application/json' \
--header 'X-Requested-With: XMLHttpRequest' \
--url 'http://example.org/ajax_call' \
--data "my_data":"data_value"
最后:
curl \
--request POST \
--header 'Content-type: application/json' \
--header 'X-Requested-With: XMLHttpRequest' \
--url 'http://example.org/ajax_call' \
-F "my_data=data_value"
的数据永远不会被服务器(Symfony的在我的情况)抓获。我想有一个XMLHttpRequest格式在cURL中的问题,我想知道我试图做什么甚至可能(这意味着通过cURL XMLHttpRequest对象的正确格式)
我爬网几个小时,到目前为止,没有发现任何有数据参数
感谢您的帮助
编辑
发现的解决方案由于人们注释部分是:
curl -v \
--header 'X-Requested-With: XMLHttpRequest' \
'http://example.org/ajax_call' \
-d my_data=data_value
答
你所有的卷曲请求有效,并且可以进行处理。在Symfony的应用程序控制器,可以通过方法getContent()
访问发送JSON对象Request对象:
/**
* @Route("/ajax_call", name="some_action")
*/
public function someAction(Request $request)
{
if ('' !== $content = $request->getContent()) {
$data = json_decode($content);
// some action…
}
return new Response(null, Response::HTTP_BAD_REQUEST);
}
在开发人员工具栏中您的要求是这样的:
IS路由设置为接收' POST'和跨域来自你的域名? – 1252748
如果你只是输入'curl',会发生什么情况?http://example.org/ajax_call'-d my_data = data_value'并让'curl'尝试与服务器一起工作?如果有效,请使用'curl -v'http://example.org/ajax_call'-d my_data = data_value'再次尝试,然后查看为Content-Type,Accept和任何其他相关头文件设置了什么值。 – hmedia1
你给'curl'的选项越少,它会尝试为你工作的越多。例如,如果添加'-d data = value'参数,'curl'会自动使其成为'POST'请求,而不指定'-X POST'。有时它可以帮助API了解什么可行,什么不可行,什么设置很重要,什么设置被忽略。等等。 – hmedia1