Yii2 cors filters error that No 'Access-Control-Allow-Origin' header is present

后端 未结 4 1330
粉色の甜心
粉色の甜心 2020-12-17 10:22

Following This question i have set my rest controller behaviour as

public function behaviors()
{
    $behaviors = parent::behaviors();

    $auth= $behaviors         


        
4条回答
  •  自闭症患者
    2020-12-17 10:48

    It is important to write $behaviors['access'] ie. AccessControl as a last parameter, for example:

    public function behaviors()     {
        $behaviors = parent::behaviors(); 
    
        // remove authentication filter         
        unset($behaviors['authenticator']);   
    
        $behaviors['corsFilter'] = [     
            'class' => \yii\filters\Cors::class,
            'cors'  => [
                    'Origin' => ['*'], 
                    'Access-Control-Request-Method'    => ['POST', 'GET', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'], 
                    'Access-Control-Allow-Headers' => ['Origin', 'X-Requested-With', 'Content-Type', 'accept', 'Authorization'], 
                    'Access-Control-Request-Headers' => ['*'],    
                    'Access-Control-Max-Age'           => 3600, // Cache (seconds) 
                    // Allow the X-Pagination-Current-Page header to be exposed to the browser.             
                    'Access-Control-Expose-Headers' => ['X-Pagination-Total-Count', 'X-Pagination-Page-Count', 'X-Pagination-Current-Page', 'X-Pagination-Per-Page'] 
            ] 
        ];           
    
        $behaviors['authenticator'] = [ ... whatever ... ];          
    
        $behaviors['access'] = [           
          'class' => AccessControl::className(),           
          'rules' => [   
                      [  
                        'allow' => true,   
                        'actions' => ['options'], // important for cors ie. pre-flight requests   
                      ], 
                    ]   
        ];
      } 
    

提交回复
热议问题