用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 
+1

IS路由设置为接收' POST'和跨域来自你的域名? – 1252748

+0

如果你只是输入'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

+0

你给'curl'的选项越少,它会尝试为你工作的越多。例如,如果添加'-d data = value'参数,'curl'会自动使其成为'POST'请求​​,而不指定'-X POST'。有时它可以帮助API了解什么可行,什么不可行,什么设置很重要,什么设置被忽略。等等。 – hmedia1

你所有的卷曲请求有效,并且可以进行处理。在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); 
} 

在开发人员工具栏中您的要求是这样的:

enter image description here