Laravel枪口请求在修补程序上工作,但在控制器中未经授权

时间:2018-08-22 16:37:18

标签: laravel guzzle

我遇到了一个无法解决的问题,我有一个使用Guzzle连接到宁静的api的类,它可以在修补程序中工作,但是在控制器中,我总是使用相同的连接收到401未经授权的错误数据。

ApiConnectionClass

use App\ApiData;
use Carbon\Carbon;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Psr7;
class ApiConnectionClass
{
    var $conn_data;
    var $client;

public function __construct()
{
    $this->conn_data = ApiData::findOrFail(1);
    $this->client = new Client(['base_uri' => $this->conn_data->url]);
}

 public function lista_pruebas(){
    try{
        $response = $this->client->request('GET', 'pruebas/detalles', [
            'verify' => false,
            'headers' => ['Authorization' => 'Bearer ' . $this->conn_data->access_token],
        ]);
    } catch (GuzzleException $e) {
        dump(Psr7\str($e->getRequest()));
        if ($e->hasResponse()) {
            dd(Psr7\str($e->getResponse()));
        }
    }
     return json_decode($response->getBody()->getContents());
 }

在修补匠中,我得到了正确的json响应

$api = new App\Classes\ApiConnectionClass();
$api->lista_pruebas();

ApiController

use App\Classes\ApiConnectionClass;


class ApiController extends Controller
{
    public function lista_pruebas(){
        $api = new ApiConnectionClass();
        $lista = $api->lista_pruebas();

        return view('pruebas.index', compact('lista'));
    }
}

从控制器调用的ApiConnectionClass响应

  

“”“ HTTP / 1.0 401未经授权\ r \ n日期:2018年8月22日,星期三16:20:58   GMT \ r \ n服务器:Apache / 2.4.33(Win64)PHP / 7.2.4 \ r \ n变化:   授权\ r \ n X-Powered-By:PHP / 7.2.4 \ r \ n缓存控制:无缓存,   私人\ r \ n内容长度:13 \ r \ n连接:close \ r \ n内容类型:   text / html; charset = UTF-8 \ r \ n \ r \ n未经授权。 “”“

1 个答案:

答案 0 :(得分:0)

这似乎不是您在代码中所做的事情的错误,因为我可以在网络上的任何地方看到这种耗时的用法。我确实有一些建议。 Tinker使用的运行时与应用程序不同(分别为php-cli和php-fpm),这可能会导致问题,因为在一种情况下(php-cli)php直接从您的机器进入api服务器,而在另一种情况下则通过您的网络服务器发出请求之前(php-fpm)。要做的第一件事是使用php artisan cache:clear和php artisan config:clear清除您的laravel缓存和配置,如果失败,我将查看您的Web服务器上的跨域限制或设置。祝好运!