php - laravel 使用curl请求,返回值被认为是一次请求而出错
过去多啦不再A梦
过去多啦不再A梦 2017-06-05 11:08:44
0
1
1070

需求背景:
项目需要对其他平台进行一次curl的请求,我发送手机号过去,其他平台发送验证码给用户并给我发送成功的回执.
问题:
本地调试是没问题的,但是上到服务器上却发生了将curl回执,即$data = curl_exec($curl);中的$data数据当成是一次请求,并且还要验证这个$data的token,还要在路由文件中寻找他的分发规则...
我的排错思路:
我首先在
./vendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareVerifyCsrfToken.php
的handle方法中添加了这样一句 var_dump(Request::path()):

public function handle($request, Closure $next)
{

var_dump(Request::path());
if ($this->isReading($request) || $this->shouldPassThrough($request) || $this->tokensMatch($request)) {
    return $this->addCookieToResponse($request, $next($request));
}

throw new TokenMismatchException;

}

结果打印出来的路径是发送curl请求的url,然后还有我要进行curl通信的平台url,这就导致了我之后csrf_token报错和路径报错的原因.
我发送curl请求的控制器方法为:

/*
 * 发送验证码请求
 */

public function ajaxRquest(Request $request) {
    $input['tel_num'] = $request->input('tel');
    $url = config('Api');
    $url = $url['sendVerifyCode'];
    if ($request->input('code_attr') == 'submitInformation') {
        $input['union_event'] = 'submitInformation';
    } else {
        $input['union_event'] = 'queryProgress';
    }
    $result = $this->postCurlInfo($url, json_encode($input));
    return $result;
}

public function postCurlInfo($url, $data) {
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $data,
        CURLOPT_HTTPHEADER => array(
            "cache-control: no-cache",
            "content-type: application/json",
        ),
    ));
    return curl_exec($curl);
}

而我打印出来的路径是:

string(16) "Index/ajaxRquest" string(31) "v1/serviceCenter/sendVerifyCode"

第一个string是我发送curl的方法路径,而后面那个是发送回执的url.

我觉得很奇怪,不应该出现将curl的返回当做是一次请求的啊!请问大家为什么会这样?谢谢!

过去多啦不再A梦
过去多啦不再A梦

全部回复(1)
过去多啦不再A梦

没理解你的问题,不过发起http请求,不推荐直接curl操作,可以试试laravel推荐的zttp库

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板