使用cURL复制Ajax请求
我试图用cURL重现Ajax请求,但总是失败。 服务器根本没有发送数据(下面示例中的my_数据) 我还尝试:使用cURL复制Ajax请求,ajax,symfony,curl,Ajax,Symfony,Curl,我试图用cURL重现Ajax请求,但总是失败。 服务器根本没有发送数据(下面示例中的my_数据) 我还尝试: curl \ --request POST \ --header 'Content-type: application/json' \ --header 'X-Requested-With: XMLHttpRequest' \ --url 'http://example.org/ajax_call' \ --data "my_data":"dat
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)。我猜cURL中的XMLHttpRequest格式有问题,我想知道我尝试做的是否可能(意味着通过cURL正确格式化XMLHttpRequest对象)
我在网上爬了几个小时,到目前为止还没有找到任何数据参数
谢谢你的帮助
编辑
在评论部分找到的解决方案是:
curl -v \
--header 'X-Requested-With: XMLHttpRequest' \
'http://example.org/ajax_call' \
-d my_data=data_value
您所有的cURL请求都是有效的,可以处理。在Symfony app controller中,您可以通过请求对象的方法访问发送的JSON对象:
/**
*@Route(“/ajax\u call”,name=“some\u action”)
*/
公共函数someAction(请求$Request)
{
如果(“”!=$content=$request->getContent()){
$data=json_decode($content);
//一些行动…
}
返回新的响应(null,响应::HTTP\U BAD\U请求);
}
在开发人员工具栏中,您的请求如下所示:
路由是否设置为从您的域接收
POST
和跨源?如果您只需键入curl会发生什么情况http://example.org/ajax_call“-d my_data=data_value
并让curl
与服务器一起尝试解决它?如果有效,请使用curl-v'重试http://example.org/ajax_call“-d my_data=data_value
然后查看为内容类型、接受和任何其他相关标题设置了哪些值。您提供的curl
选项越少,它就越能为您解决问题。例如,如果添加-d data=value
参数,curl
将自动使其成为POST
请求,而不指定-X POST
。有时,它可以帮助API了解哪些有效,哪些无效,哪些设置重要,哪些设置被忽略。同样,@1252748也是正确的,再次检查curl-v
的响应,您还可以尝试curl'http://example.org/ajax_call?my_data=my_value“
要查看它是否响应url查询字符串paramsHow,您是否正在测试此symfony端?POST有效,但数据检索无效吗?你应该得到一些回应,是什么?
curl -v \
--header 'X-Requested-With: XMLHttpRequest' \
'http://example.org/ajax_call' \
-d my_data=data_value