2017-09-04 22 views
0

顧客は、WebインターフェイスおよびREST APIを通じて、同じエンドポイントを使用できるように要求しました。Yii2 Webおよび残りのAPIを介してエンドポイントにアクセス可能

ログイン時のみWebブラウザを使用して同じエンドポイントを表示する必要があります.REST API経由でアクセスする場合は、有効なアクセストークンを送信する必要があります。

この特定のエンドポイントのためのルールは以下のように定義されています、今

[ 
    'class' => 'yii\rest\UrlRule', 
    'controller' => 'site', 
    'pluralize' => false, 
    'extraPatterns' => [ 
     'POST upload-raw-data' => 'uploadRawData' 
    ], 
] 

私はこのエンドポイントにアクセスしようとすると、私はこれらの結果持っている:

  • ブラウザ:問題なし
  • ポストマンを/ POST:404エラー
  • ポストマン/ GET:ENABLと同じことをしようとして問題はない
  • eStrictParsingが有効になっていると、404エラーが発生しています。

    コードの他の部分を提供する必要がある場合は、喜んで提供します。

    +0

    指定してください。あなたも見てみることができますhttps://github.com/yiisoft/yii2/issues/8153 –

    +0

    はい、私はトークンを使用しています。 私はそれをまだ検証しておらず、ブラウザまたは休憩を使用しているときに出力を得るための基礎を得る – kurt

    答えて

    0

    問題の解決策を見つけたと思います。この問題は、CSRFの検証であったようです。

    beforeAction()でこの特定のアクションを無効にすると、POST呼び出しは意図したとおりに動作します。

    public function beforeAction($action) { 
        if ($action->id == 'upload-raw-data') 
         Yii::$app->controller->enableCsrfValidation = false; 
    
        return parent::beforeAction($action); 
    } 
    

    ソース:あなたはトークンを使用している場合https://gist.github.com/guerreiro/9e9cb3154b9047f5d2a0

    関連する問題