代码之家  ›  专栏  ›  技术社区  ›  Imran Omar Bukhsh

PHP(Yii2)AngularJS的CORS问题

  •  0
  • Imran Omar Bukhsh  · 技术社区  · 8 年前

    继续解决cors问题。 已尝试以下操作:

    1. 添加您可以在yii2的图像中看到的代码
    2. 已经在firefox中安装了Cors插件

    http://thisisbig.ae/advanced/backend/web/customersapi/update/?id=2

    enter image description here

    2 回复  |  直到 8 年前
        1
  •  2
  •   Imran Omar Bukhsh    8 年前

    在后端(Yii2),需要重写控制器中的verbs()函数,并为“update”值添加“OPTIONS”

    protected function verbs()
    {
        return [
            'index' => ['GET', 'HEAD'],
            'view' => ['GET', 'HEAD'],
            'create' => ['POST'],
            'update' => ['PUT', 'PATCH','OPTIONS'],
            'delete' => ['DELETE'],
        ];
    } 
    
        2
  •  2
  •   Azraar Azward    8 年前

    使用行为来定义此

    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => \yii\filters\VerbFilter::className(),
                'actions' => [
                    'index'  => ['GET'],
                    'view'   => ['GET'],
                    'create' => ['GET', 'POST'],
                    'update' => ['GET', 'PUT', 'POST'],
                    'delete' => ['POST', 'DELETE'],
                ],
            ],
        ];
    } 
    

    您还可以通过将CORS filter作为行为附加到控制器或模块来使用它,如下所示,

    public function behaviors()
    {
        return [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
            ],
        ];
    }
    

    public function behaviors()
    {
        return [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
                'cors' => [
                    // restrict access to
                    'Origin' => ['http://www.myserver.com', 'https://www.myserver.com'],
                    // Allow only POST and PUT methods
                    'Access-Control-Request-Method' => ['POST', 'PUT'],
                    // Allow only headers 'X-Wsse'
                    'Access-Control-Request-Headers' => ['X-Wsse'],
                    // Allow credentials (cookies, authorization headers, etc.) to be exposed to the browser
                    'Access-Control-Allow-Credentials' => true,
                    // Allow OPTIONS caching
                    'Access-Control-Max-Age' => 3600,
                    // Allow the X-Pagination-Current-Page header to be exposed to the browser.
                    'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
                ],
    
            ],
        ];
    }
    
    推荐文章