如何解决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 举报,一经查实,本站将立刻删除。