Задать вопрос
  • Работает сайт по HTTPS версии IP. Как исправить?

    Господа не выдумываем велосипед
    Работа HTTPS в корне отличается от HTTP
    При обращение по http ты вначале получаешь имя сайта из отета сервера на основание этого имени подставляется конфиг.
    НО при HTTPS вы вначале получаете ключи, и только после этого множите получить хоть байт информации с канала.
    Как следствие этого два постулата:
    1. Если у вас есть хоть один сайт с https у всех остальных он появляется автоматически, хотите вы этого или нет, поскольку механизм разобра конфигов идет после установления канала, это фундоментально!
    Так что при обращение по IP вы в любом случае получите ключи https, поскольку это тупо демон на порту.
    2. Если нет пары ключей для именно этого домена, в частности IP будем считать как домен не имеющий явных ключей для себя. ТО от безвыходности веб сервер берет БЛИЖАЙШИЕ ключи сортируя их по имени то есть как правило это 000-default.conf
    В котором у вас лежат как-раз таки дефолтные ключи, может быть даже самоподписаные, НО только после этого у вас возможно получене http reffer.
    ну все что остается это завести ненужного товарищя в тупик
    например вот так.

    server {

    listen 443 ssl;
           server_name default_server ;
           ssl_certificate        /etc/ssl/certs/ssl-cert-snakeoil.pem;
           ssl_certificate_key    /etc/ssl/private/ssl-cert-snakeoil.key;
           root /var/www/html;
           return 444;
    }

    Но не пытайтесь ограничить сайт по именам до получения ключей это просо невозможно
    Намного проще сделать отдельный конфиг для этого айпи и уводить его в ловушку. чем ловить чего через default_server
    Ответ написан
    6 комментариев
  • Как использовать сетку страницы для элементов CSS Grid?

    rockfeeler
    @rockfeeler
    Фронтендер, дизайнер, верстальщик-перфекционист
    Один из вариантов – бить грид. Например, так:

    grid-template-areas: "logo header header ..."

    И верхнему левому дать grid-area: logo. Отсюда и плясать.
    Ответ написан
    Комментировать
  • Сайт доступен по IP NGINX. Как исправить?

    @MegaLoadOn
    #!/bin/bash
    Блокировка по ip:
    server {
    listen 80;
    server_name "";
    return 444;
    }

    Если надо редиректить на домен то:
    server {
    listen 80;
    server_name "";
    return 301 https://domain.local$request_uri;
    }
    Ответ написан
    Комментировать
  • Можно ли использовать больше одного app.render()?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Про какие именно app.render() вы говорите?

    Если я правильно понял, хотите убрать дублирование кода в функции, слушающей POST на урл '/' ? Тогда так, например:

    var news = {
        yandex: {
            newsOne: 'Новость 1',
            newsTwo: 'Новость 2',
            newsThree: 'Новость 3',
            newsFour: 'Новость 4',
            newsFive: 'Новость 5'
        },
        lenta: {
            newsOne: 'Новость 1',
            newsTwo: 'Новость 2',
            newsThree: 'Новость 3',
            newsFour: 'Новость 4',
            newsFive: 'Новость 5'
        },
        tj: {
            newsOne: 'Новость 1',
            newsTwo: 'Новость 2',
            newsThree: 'Новость 3',
            newsFour: 'Новость 4',
            newsFive: 'Новость 5'
        },
    }
    
    ...
    
    app.post('/', urlencodedParser, function(req, res) {
        console.log('Был получен запрос: ' + req.body.news)
        res.render('index', news[req.body.news]);
    })
    Ответ написан
    4 комментария
  • Зачем передавать результат функции в переменную в замыканиях?

    KevlarBeaver
    @KevlarBeaver
    Разработчик
    Потому что в первом случае внутренняя функция будет создана один раз, а во втором - каждый раз при вызове counter()
    Ответ написан
    3 комментария
  • Выдает ошибку при переборе .children. Что делать?

    0xD34F
    @0xD34F Куратор тега JavaScript
    У последнего элемента следующего нет, так что в качестве nextElementSibling вы получаете null, а у null нельзя читать свойства. Как победить возникающую ошибку? - проще всего будет вообще не трогать последний элемент, пусть цикл делает на одну итерацию меньше, для этого замените i < children.length на i < children.length - 1. Другой вариант - прежде чем пытаться читать свойства у следующего элемента, проверять, существует ли он, или не является ли текущий последним, или подсовывать вместо отсутствующего элемента пустой объект - актуально в том случае, если перебор элементов организован не через цикл со счётчиком, а с помощью for...of или методов.

    Ещё стоит разобраться, чем присваивание отличается от проверки на равенство (nodeName = 'P', ну да, ну да).

    Как может выглядеть исправленная (и переписанная) функция:

    function findAllPSiblings(el) {
      const result = [];
    
      for (const n of el.children) {
        if ((n.nextElementSibling || {}).tagName === 'P') {
          result.push(n);
        }
      }
    
      return result;
    }

    А вообще, зачем ограничиваться одними лишь p? Давайте решим задачу в чуть более общем виде - пусть функция кроме родительского элемента принимает ещё и селектор, которому должны соответствовать соседи справа:

    const getChildrenWithNext = (el, selector) =>
      Array.prototype.filter.call(
        el.children,
        ({ nextElementSibling: n }) => n && n.matches(selector)
      );
    Ответ написан
    Комментировать
  • Выдает ошибку при переборе .children. Что делать?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Почему не работает?
    Потому что у последнего элемента по определению не может быть следующего соседа. И если у вас не бесконечная страница, у вас всегда есть последний элемент.

    Что делать?
    Добавить дополнительную проверку, что следующий элемент существует.
    Ответ написан
    Комментировать
  • Возможно ли создать соц.сеть на JS, например, при помощи Node.js?

    opium
    @opium
    Просто люблю качественно работать
    Соцсети можно создавать на любом языке, какая разница то?
    Ответ написан
    Комментировать
  • Возможно ли создать соц.сеть на JS, например, при помощи Node.js?

    Lumore
    @Lumore
    Front-end developer
    Да, в сети много примеров, например этот
    Ответ написан
    Комментировать