2017-01-22 3 views
0

Ich versuche GuzzleHttp in einer Laravel 5.3-Anwendung zu verwenden, um eine Verbindung zu https://api.example.com (beachten Sie die https).Warum versucht GuzzleHttp Port 80 für https zu verwenden?

<?php 

$client = new GuzzleHttp\Client(); 

$res = $client->request('GET', 'https://api.example.com/accounts', [ 
    'headers' => [ 
     'Accept' => 'application/json', 
     'Authorization' => "Token $token" 
    ] 
]); 

var_dump($res->getBody()); 

aber ich erhalte eine Fehlermeldung, dass es nicht auf Port anschließen kann 80 (!) Trotz der https in der URL. Selbst wenn ich angeben Port 443 (zum Beispiel https://api.example.com:443/accounts) gibt es nach wie vor mir diesen Fehler über Port 80:

cURL error 7: Failed to connect to api.example.com port 80: 
Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) 

Warum wird es keine Verbindung auf Port 443? Warum versucht es eine Verbindung über Port 80 herzustellen?

+1

Haben Sie überprüft, dass die API nicht umgeleitet wird? – nogad

+0

@nogad Nun, was weißt du? Ich überprüfte die Ausgabe durch eine rohe "Curl" -Anforderung und sie kam mit 301 zurück (permanent verschoben). Interessant. Wird später mehr untersuchen. – fronzee

+0

lustig, was passiert, wenn Sie überprüfen ;-) – nogad

Antwort

2

gehen. Ich sah in dieser mehr und entdecken, dass ich ein 301 Moved Permanently/Location: http://api.example.com/accounts bekommen, wenn https://api.example.com/accounts

anfordernden ich zu verwirrt war, warum ich von https zu http umgeleitet werden, aber entdecken das Problem mit der api ist. Stellt sich heraus, haben Sie fügen Sie einen Schrägstrich am Ende. https://api.example.com/accounts/ leitet nicht zu Port 80 um, funktioniert aber.

0

Haben Sie das $ für die Token-Variable (und die doppelten Anführungszeichen) vermisst?

Vielleicht bedeuten Du 'Authorization' => "Token {$token}" Vielleicht hier meine eigene Frage zu beantworten, es Umleitung wegen falschen Auth-Header

+0

Das ist nur ein Platzhalter für ein echtes Token, das ich nicht preisgeben möchte. In meinem Code habe ich "Authorization" => "Token". $ Token' – fronzee

Verwandte Themen