2017-01-31 2 views
1

Ich habe eine API mit Laravel mit einer CORS Middleware erstellt.Laravel 5: Aufruf der nicht definierten Methode Response :: header() beim Zugriff auf Daten über die API?

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Cors 
{ 

    public function handle($request, Closure $next) 
    { 
     return $next($request) 
      ->header('Access-Control-Allow-Origin', '*') 
      ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS') 
      ->header('Access-Control-Allow-Headers','Content-Type, Authorization, X-XSRF-TOKEN'); 
    } 
} 

Beim Versuch, Daten über die API für den Zugriff auf localhost:8000/api/items, erhalte ich die folgende URL auf meinem Laravel Terminal und

Call to undefined Methode Symfony \ Component \ HttpFoundation \ Antwort :: header()

Fehle ich etwas?

Antwort

-1

versuchen Sie auf diese Weise, sollte dies Ihre CORS Probleme beheben, deklarieren es in Ihrer Klasse Konstruktor. und es lässt dich API arbeiten.

<?php 

Namensraum App \ Http \ Middleware;

Verwendung Verschluss;

Klasse Cors {

public function __construct (Request $ request) {

$request->header('Access-Control-Allow-Origin', '*'); 
    $request->header('Content-Type', 'text/plain'); 
} 

}

, warum die Menschen auf diese Antwort negativ ist, stimmen? das funktioniert auch gut und gut als andere, ich bin derzeit in einer Produktionsstätte, ich war die erste Lösung für den Kerl, die Anfrage für diese Hilfe intime.

4

Ich weiß, es ist etwas spät, aber ich hatte ein ähnliches Problem, wenn Sie die Symfony\Component\HttpFoundation\StreamedResponse verwenden.

Wie Sie sagt, das Problem der

Call to undefined Methode ist ... :: header()

So klar die header Methode auf einem Objekt nicht vorhanden.

Für mich war die Lösung headers Methode, die Sie die \Symfony\Component\HttpFoundation\ResponseHeaderBag zurückgibt.

Verwenden Sie es wie folgt:

public function handle($request, Closure $next) 
{ 
    $response = $next($request); 
    $response->headers->set('Access-Control-Allow-Origin', '*'); 
    $response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS'); 
    $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-XSRF-TOKEN'); 
    return $response; 
} 
+0

für mich Laravel 5.5 Danke gearbeitet – Mohannd

Verwandte Themen