رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تنظیمات Apache برای سرویس Rest
#1
Question 
از سمت یک Web App با Angular درخواست های آژاکس بر روی سرور (لوکال) فرستاده میشه اما هیچ جوابی دریافت نمیشه. تو تابع که موقع خطا اجرا مکیشه کد status را 1- بر می گرداند. پارامتر های مرتبط با whitelist و origin تنظیم شده.
وقتی آدرس سایتی مثل google.com می نویسیم جواب می گیریم. اما به سرور local اصلا جوابی دریافت نمی کنه.
سرور rest با yii2 نوشته شده و تنظیمات مانند
Header set Access-Control-Allow-Origin "*"
تنظیم شده ولی باز هم فرقی نکرد. ماژول headers تو apache هم فعال هست.
سرور تنظیمات خاص دیگه ای هم باید داشته باشه ؟
پاسخ
تشکر شده توسط:
#2
این لینک رو مطالعه کنید (همراه با بخشهای فرعی داخلش) :
http://www.yiiframework.com/doc-2.0/guid...start.html
پاسخ
تشکر شده توسط:
#3
Information 
(05-05-1395، 01:36 ب.ظ)ADMIN نوشته: این لینک رو مطالعه کنید (همراه با بخشهای فرعی داخلش) :
http://www.yiiframework.com/doc-2.0/guid...start.html

این ها رو مطالعه کردم ولی جواب نداد. بعضی ها با header("Access-Control-Allow-Origin: *"); جواب گرفتند ولی من تست کردم جواب نداد.

کد کنترلر :
<?php
namespace app\controllers;

use app\models\Settings;
use yii;
use yii\rest\ActiveController;
use yii\data\ActiveDataProvider;
use app\models\Category;
use yii\filters\auth\HttpBasicAuth;
use app\data\AppLocale;

class CategoryController extends ActiveController
{
   public $modelClass = 'app\models\Category';
   private $language;
   public function init()
   {
       parent::init();
//        set language
       $this->language=substr(Yii::$app->request->getQueryParam('lang',Settings::defaultLanguage()),0,2);

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

       // remove authentication filter
       $auth = $behaviors['authenticator'];
       unset($behaviors['authenticator']);

       // add CORS filter
       $behaviors['corsFilter'] = [
            'class' => \yii\filters\Cors::className(),
        ];

       // re-add authentication filter
       $behaviors['authenticator'] = $auth;
       // avoid authentication on CORS-pre-flight requests (HTTP OPTIONS method)
       $behaviors['authenticator']['except'] = ['options'];

       return $behaviors;
   }
   
   public function actions()
   {
       $actions = parent::actions();

       // remove the "create", "update", "options" and "delete" actions
       unset($actions['delete'], $actions['create'],$actions['update'],$actions['options']);

       // customize the data provider preparation with the "prepareDataProvider()" method
       $actions['index']['prepareDataProvider'] = [$this, 'getCategories'];

//        set view action $findModel
       $actions['view']['findModel']=function ($id, $action) {
           $data=Category::find()->select([
                'category.category_id','category.picture',
                'trn.name',
            ])->innerJoinWith([
               'translates trn' => function ($query) {
                   $query->andWhere(['=', 'trn.language', $this->language]);
               },
           ])->where(['category.active'=>1,'category.category_id'=>$id])->one();
           return $data ? $data : [];
       };

       return $actions;
   }

   /**
    * @param ActionObject $action
    * @return mixed
    */
   public function getCategories($action)
   {
       // prepare and return a data provider for the "index" action
       $req=Yii::$app->request;
       $parent=$req->getQueryParam('parent',null);
//        set language
       $this->language=AppLocale::getRestLanguage();
//        query of select categories
       $query=Category::find()->select([
            'category.category_id','category.picture',
            'trn.name',
        ])->innerJoinWith([
           'translates trn' => function ($query) {
               $query->andWhere(['like', 'trn.language', $this->language]);
           },
       ])->where(['category.active'=>1]);

       if(!is_null($parent)) {
//            set parent condition
           $parent = (int)$parent;
           if($parent > 0)
               $query->andWhere(['category.parent'=>$parent]);
       } else {
//            set root condition
           $query->andWhere(['category.parent'=>null]);
       }

       // You can prepare $query here
       return new ActiveDataProvider([
            'query' => $query,
        ]);
   }


}
?>
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان