ドメインからAJAXリクエストを送信しようとしています:127.0.0.1:8000をlocalhost:8000に送信しています。Symfony Ajax同じ発信元ポリシー
を許可されていない405の方法Iは、原点の問題のために右のヘッダを送信しているリスナーを追加、持っている:この呼び出しは
ステータスコードで終了さ
<?php namespace AppBundle\Listener; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; /** * Class CorsListener is handling on Kernel response header actions * @package AppBundle\Listener */ class CorsListener { public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); // allow this only for the tracking URL /*if(strpos($request->getHost(), 'api.') === false) { return; }*/ $event->getResponse()->headers->set('Access-Control-Allow-Headers', 'origin, content-type, accept'); $event->getResponse()->headers->set('Access-Control-Allow-Origin', '*'); $event->getResponse()->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE OPTIONS'); } }
しかし、ヘッダーでさえ、あなたは下の画像で見ることができます、それは要求になることはできません。
いくつかお手伝いしますか?
あなたのPHPコードは、OPTIONS要求のための明示的な取り扱いが必要です。 Access-Control-Allow-Methodsのresponse-headerの値に "OPTIONS"を入れるだけでは不十分です。ヘッダー値が持つ唯一の効果は、ブラウザーではクライアント側です。あなたが持っている問題はサーバー側であり、CORSヘッダーの設定とは無関係です。 OPTIONS要求を処理するための明示的なコードが必要です。そのコードは、あなたが既に設定したヘッダーを含む200 OK応答を送信するだけです(以下で説明するように、カンマが追加されていません)。 – sideshowbarker
このhttps://github.com/nelmio/NelmioCorsBundleをお試しください。私はこれがSymfonyにとって最高の解決策だと思います。 – habibun
NelmioCorsBundleは、セットアップがとても簡単です。 –