php卷曲不会遵循重定向操作



我有2个应用程序,一个是PHP,另一个是C#编写的.NET MVC。PHP应用程序将Curl HTTP Post请求发送到MVC应用中的HTTPPOST操作。该操作很简单,但是最后我有重定向操作('SomeGetAction'(,该操作将请求重定向到同一应用程序中的HTTPGET操作。MVC应用程序中的重定向可按预期工作,并由各种工具(例如邮递员和定制工具(进行测试。但是,当我尝试使用curl curl请求时间在步骤redirecttoaction('SomeGetAction'(中发送帖子。我可以调试后的动作罚款,直到应该将行动重定向到应发生的地步,但那时什么都没有发生。有什么想法在这里有什么问题?

这是我的卷发:

<?php
$data = 'someData=someData';
$header = array(
                'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
                'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',
                'Content-Length: ' . strlen($data)
);
$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL, 'http://mvcApplicationUrl');
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$response = curl_exec($ch);
echo $response;
echo 'finished';
?>

你说

动作非常简单,但最后我有 REDIRECTTOACTION(" someGetAction"(将请求重定向到 在同一应用程序中的httpget操作。

不,它实际上没有这样做。

它的作用是,用"位置" HTTP标头向客户端发送HTTP 302响应,该响应包含要重定向到的URL。

客户端可能可选的决定向该URL提出新请求。GUI浏览器通常会自动执行此操作,作为用户友好的功能。其他HTTP客户(例如Curl(通常不会 - 如果您想关注重定向,则您会自己阅读标题信息并编写代码以向建议的URL提出新要求。

RedirectToAction的行为在此处记录,提到了我上面描述的过程:https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(V = vs.118(。

无论如何,如果您打算从一个应用程序中进行程序化调用到另一个应用程序,那么您最好在.NET侧面公开Web API控制器,以便应用程序可以以机器友好格式(例如JSON(以机器友好的格式交换信息或XML,而不是尝试通过浏览器来处理为人类用户设计的GUI应用程序。

最新更新