понедельник, 29 августа 2016 г.

Кроссдоменные куки с помощью AJAX

Кроссдоменные куки можно установить с помощью AJAX-запроса.

Для этого используем CORS.

Пример для Yii2:

<?php

namespace frontend\controllers;

use yii\web\Response;
use Yii;
use app\components\MyUtility;
use yii\web\Controller;

class CoolController extends Controller
{
    // Отключаем CSRF для контроллера.
    // Кроссдоменный запрос работает только без CSRF.
    public $enableCsrfValidation = false;

    public function behaviors()
    {
        // Включаем CORS для контроллера.
        return [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
                'cors' => [
                    // Разрешаем доступ с указанных доменов.
                    'Origin' => ['http://site1.com', 'http://site2.com'],
                    'Access-Control-Allow-Origin' => true,
                    // Куки от кроссдоменного запроса
                    // будут установлены браузером только при заголовке
                    // "Access-Control-Allow-Credentials".
                    'Access-Control-Allow-Credentials' => true,
                    // Разрешаем только метод POST.
                    'Access-Control-Request-Method' => ['POST'],
                ],
            ],
        ];
    }

    public function actionSelect()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return MyUtility::processPostParamsAndSetCookie(Yii::$app->request->post());
    }
}

Код JQuery:

$.ajax('http://site.com/set-global-cookie', {
    type : 'POST',
    data : {veryImportantData: someInformation},
    success : function (response) {
        if (response.status !== 'success') {
            if (response.status === 'error') {
                console.error('Возникла ошибка: ' + response.message);
            } else {
                console.error('Возникла неизвестная ошибка.');
            }
        }
    },
    error :  function(xhr, str){
        console.error('Возникла ошибка AJAX: ' + xhr.responseCode + ', "' + str + '"');
    },
    xhrFields: {
        // Необходимо для установки куков.
        withCredentials: true
    },
});

вторник, 23 августа 2016 г.

Настройка LESS в Netbeans

Для начала, настройте автоматическую сборку LESS на OpenServer: Настройка LESS в Yii2 на OpenServer.

LESS-файлы теперь компилируются автоматически, но при изменении в редакторе, приходится вручную чистить кеш.

Чтобы не чистить кеш вручную, настраиваем автоматическую компиляцию при сохранении.

При сохранении изменённого LESS-файла, Netbeans будет автоматически запускать компиляцию в CSS.

Открываем свойства проекта, "Препроцессоры CSS", вкладка "LESS".

Ставим галочку "Скомпилировать файлов при сохранении: LESS".

Заполняем список "корневыми" LESS-файлами, по-хорошему, это должен быть один файл на проект. Дополнительные LESS-файлы включаются в него с помощью директивы "@import".

Для Yii2 список аналогичен прописанному в файле "frontend\assets\AppAsset.php".
Ввод                              Вывод
/frontend/web/css/less/style.less /frontend/web/css/less/style.css

Для проверки компиляции, открываем "Окно -> Вывод". Здесь будут сообщения о запуске LESS-компилятора при сохранении LESS-файлов.