2017-03-23 3 views
1

In meiner neuen Anwendung API muss ich überprüfen, dass die Anfrage von den URLs von Drittanbietern in https sein sollte. Wenn es nicht https ist, muss ich die Meldung zurück als „Verbindung nicht sicher ist‘ jemand kann mir helfenWie bekomme ich das Protokoll (http/https) der eingehenden Anfrage von der Laravel-HTTP-Anfrageklasse?

+1

Eine einfache Google-Suche sollte Ihnen helfen – JRR

+0

@SathishkumarR ich es thint wäre besser zu umleiten url automaticaly zu sichern, keine Vorführung die Nachricht, denkst du nicht? –

+1

@Autista_z Es ist nur eine API. Es wird die Anfrage validieren und den Benutzer in meiner Anwendung registrieren. Dann gibt es die Antwort mit URL zurück, um mit Zugangstoken zu greifen, der in 5 Minuten abläuft. –

Antwort

3

Sie sind hier:.?

Determining If The Request Is Over HTTPS 

if (Request::secure()) 
{ 
    // 
} 
+0

Danke für die Antwort. –

+1

Die Methode getScheme() gibt das Protokoll der Anforderung zurück. –

+0

Dies verwendet eine Port-Erkennungsmethode. Bei einigen Load Balancern (heroku, aws) wird dies auch bei https fehlschlagen, weil einige der Anforderungen, die hinter dem Load Balancer ausgeführt werden, Port 80 statt 443 sind. Ich musste schließlich auch einen https-String-Check verwenden. – dster77

1

Daniel Tran Antwort richtig ist nur für Informationen HTTPS- Wünsche haben ein zusätzliches Feld HTTPS auf Anfragen. Manchmal kann dieses Feld zu off auch, aber sonst nichts gleich sein.

so können Sie nur einen Code wie

schreiben
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') { 
    doSomething(); 
} 

Laravel Request Klasse erbte auch etwas völlig ähnliches von Symphony. Was Sie finden können unter;

Verkäufer/Symfony/http-foundatiton/request.php

public function isSecure() 
    { 
     if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && $proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO])) { 
      return in_array(strtolower(current(explode(',', $proto))), array('https', 'on', 'ssl', '1')); 
     } 

     $https = $this->server->get('HTTPS'); 

     return !empty($https) && 'off' !== strtolower($https); 
    } 
Verwandte Themen