Im Aufbau einer App vuejs und Lumen für den api nicht erlaubt,CORS: Content-Type wird von Access-Control-Allow-Header in Preflight Antwort
meine vuejs App einen Fehler wirft, wenn sie versuchen
zu authentifizierenXMLHttpRequest kann http://api.dev/auth/login nicht geladen werden. Anforderungsheaderfeld Content-Type ist in der Preflight-Antwort von Access-Control-Allow-Header nicht zulässig.
Ich habe einige Middleware cors zu handhaben
class cors {
/**
* @var array
*/
protected $settings = [
'maxAge' => 0,
'origin' => '*',
'allowMethods' => '*',
'exposeHeaders' => '*',
'allowedHeaders' => '*'
];
public function handle(ServerRequestInterface $request, Closure $next)
{
//handle preflight request
if ('OPTIONS' == $request->getMethod()) {
$response = new \Illuminate\Http\Response('',"204");
$this->setOrigin($request, $response);
$this->setAllowHeaders($request,$response);
return $response;
}
}
/**
* @param ServerRequestInterface $request
* @param ResponseInterface $response
*/
protected function setOrigin(ServerRequestInterface $request,$response)
{
$origin = $this->settings['origin'];
if (is_callable($origin)) {
$origin = call_user_func($origin,$response->withAddedHeader('Origin',$origin));
}
$response->headers->set('Access-Control-Allow-Origin', $origin);
}
/**
* @param ServerRequestInterface $request
* @param ResponseInterface $response
*/
protected function setAllowHeaders(ServerRequestInterface $request,$response)
{
if (isset($this->settings['allowedHeaders'])) {
$allowedHeaders = $this->settings['allowedHeaders'];
if (is_array($allowedHeaders)) {
$allowedHeaders = implode(", ", $allowedHeaders);
}
}
else {
$allowedHeaders = $request->hasHeader("Access-Control-Request-Headers");
}
if (isset($allowedHeaders)) {
$response->headers->set('Access-Control-Allow-Headers', $allowedHeaders);
}
}
}
In Chrom meine Antwort-Header
Access-Control-Allow-Headers:*
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Type:text/html; charset=UTF-8
Date:Mon, 10 Oct 2016 16:10:52 GMT
Server:Caddy
Status:204 No Content
X-Powered-By:PHP/7.0.10
zeigen Wenn ich eine Wild Card Access-Control-Allow-Header, warum es nicht festgelegt haben den Header akzeptieren?
Ich benutze den neuesten Chrome-Browser und schaue mir andere Cors-Implementierungen an, die alle mit Wildcards zu arbeiten scheinen –
Ich glaube, die Fehlermeldung, die du siehst, ist _coming vom Browser_ also ist es eine sichere Wette, dass der Browser es wahrscheinlich nicht unterstützt. Warum nicht den Platzhalter in "Content-Type" ändern und sehen, was passiert? – PatrickSteele
wenn ich meine Einstellungen Array Header erlaubt ändern 'allowedHeaders' => 'Content-Type, Authorization, Herkunft', meine Fehlermeldung kehrt zurück zu XMLHttpRequest nicht laden kann http://api.dev//auth /Anmeldung. Antwort auf Preflight-Anfrage nicht übergeben Zugriffskontrolle überprüfen: Nein "Access-Control-Allow-Origin" Header ist auf der angeforderten Ressource vorhanden Das scheint ein Schritt zurück –