• Как создать кроссдоменный запрос в nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Вообще всю жизнь так работало:
    res.writeHead(200, {
      'Content-Type': 'text/event-stream; charset=UTF-8',
      'Cache-Control': 'no-cache',
      'Connection': 'keep-alive',
      'Access-Control-Allow-Credentials': true,
      'Access-Control-Allow-Origin': '*'
    });

    Но если не работает, то сделайте параметр в урле SSE обработчика https://[url-server]:8081/event?domain=[uri-client] и подставляйте не *, а для каждого свой свой домен.
    Кроме того, постарайтесь вешать не на 8081, а все на 80, браузеры, фаерволы и разные шлюзы любят когда все на 80. Да и балансировку тогда будет сделать проще, хардварные балансировщики и специализированные сервисы балансировки любят 80.
    Ответ написан
    Комментировать
  • Как формировать запрос с фильтром в rest yii?

    @matperez
    В yii\rest\IndexAction есть метод 'prepareDataProvider'. Если его переопределить, можно использовать get параметры в запросе для совершения выборки. Например так:
    public function actions()
        {
            return [
                'index' => [
                    'class' => IndexAction::className(),
                    'modelClass' => $this->modelClass,
                    'checkAccess' => [$this, 'checkAccess'],
                    'prepareDataProvider' => function ($action) {
                        $model = new Product();
                        $model->load(\Yii::$app->request->queryParams)
                        return $model->search();
                    }
                ],
            ];
        }


    model->search должен возвращать ActiveDataProvider на основе переданных параметров из запроса.
    Ответ написан
    1 комментарий