微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel Http客户端使用GET

如何解决Laravel Http客户端使用GET

我正在使用一个名为CallControllerButton.PHP的实时连线控制器,该控制器负责调用Laravel控制器,问题是CallControllerButton应该使用PUT方法调用它,并且每次statuscode响应为419都可以,但是效果不好

这里的CallController像这样在UserController中调用syncFromLdap方法

public function callUrl($ajaxUrl)
    {
        try {
            /*$client = new Client([
               'base_uri' => URL::to('/'),'headers' => ['X-CSRF-Token'=> csrf_token()],'timeout' => 5.0,'verify'  => false
            ]);
            $request = $client->put($ajaxUrl);*/

            $request = Http::withOptions([
                'headers' => ['X-CSRF-Token'=> csrf_token()],'verify'  => false
            ])->put(URL::to('/').'/'.$ajaxUrl)
            ;

            // PUT successful response is 200 error is 304
            if($request->getStatusCode() == 200){
                session()->flash('message','User sync ok');
            }else{
                session()->flash('error',$request->getStatusCode().'/'.$request->getBody());
            }

        }catch (HttpClientException $httpClientException){
            session()->flash('error','GuzzleException message : '.$httpClientException->getMessage().' - error code:'.$httpClientException->getCode());
        }

    }

和syncFromLdap方法是:

public function syncFromLdap(User $user)
    {

        Artisan::call('ldap:import',[
            'provider' => 'ldap','user' => $user->name,'--no-interaction','--filter' => '(mail='.$user->email.')',//'--attributes' => 'cn,mail,samaccountname',]);
        $output = Artisan::output();

        if (str_contains($output,'Successfully imported / synchronized [1]')){
            
            return new Response(null,200);
        }

        return new Response(null,304);

    }

当然,web.PHP对应的路由正常,并且标头中包含csrf令牌 我错过了什么?谢谢

解决方法

好的,通过排除这样的网址,它现在可以正常工作:

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'userSync/*'
    ];
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。