Всего 125 947 комментариев

Александр Мельник
18 июля 2023, 22:40
+1
Не знаю почему у вас работает. Я отрыл в документации (и даже по той ссылке что вы дали на mdn это тоже написано), что включение mode no-cors позволяет использовать только простые запросы.
Кстати до сегоднешнего дня не знал, что запросы делятся на простые и сложные. Но как оказалось, если запрос содержит content-type — aplication/json он уже считается сложным.
Простой запрос – это запрос, удовлетворяющий следующим условиям:

Простой метод: GET, POST или HEAD
Простые заголовки – разрешены только:
Accept,
Accept-Language,
Content-Language,
Content-Type со значением application/x-www-form-urlencoded, multipart/form-data или text/plain.

Любой другой запрос считается «непростым». Например, запрос с методом PUT или с HTTP-заголовком API-Key не соответствует условиям.
If mimeType’s essence is not «application/x-www-form-urlencoded», «multipart/form-data», or «text/plain», then return false.

Поэтому насколько я понял, fetch принудительно меняет заголовок на text, если я указал mode no-cors.
Хотя у вас работает.
Я тоже грешил на сервер, потому что это мной построенные на docker целый кластер из контейнеров, с двойным проксирование запросов и напартачить там можно было во многих местах. Но запросы с postamn, curl — проходили правильно, с корректным content-type.
Пришлось более глубоко вникнуть в работу cors. Убрал из fetch no-cors и реализовал у себя в приложении обработку предзапроса по методу options. Полнейшее для меня открытие, но оказалось что как только мы хотим сделать «сложный» запрос на «не свой домен», перед основным запросом браузер отсылает предварительный запрос на тот же url но только методом options и просит разрешения на основной запрос.
Как только я организовал у себя обработку этих предзапросов и возврат корректных (по документации заголовков), у меня все заработало.

Прекрасно, что удалось открыть что то новое для себя и спасибо за подсказки.
Баха Волков
18 июля 2023, 22:01
+1
Возможно у тебя какой-то прикол в настройках сервера.

// index.js

const btn = document.querySelector('#send')

btn.addEventListener('click', async () => {
  const user = {
    phone: '+0000000000',
    password: '76c4a096d14',
  }

  const response = await fetch('/test.php', {
    method: 'POST',
    mode: 'no-cors',
    headers: {
      'Content-Type': 'application/json;charset=utf-8',
    },
    body: JSON.stringify(user),
  })

  const result = await response.json()
  console.log(result)
})

// test.php

<?php

echo json_encode([
  'CONTENT_TYPE' => $_SERVER['CONTENT_TYPE'],
  'Content-Type' => getallheaders()['Content-Type']
]);

// Ответ сервера

{"CONTENT_TYPE":"application/json","Content-Type":"application/json"}
Артур Шевченко
18 июля 2023, 18:24
+1
Можешь вообще эту оцию не использовать, она, по-моему, бесполезная. CORS запрос сделать не поможет, а для чего ещё её можно использовать непонятно.
Александр Мельник
18 июля 2023, 17:46
0
я понял, это наверное изза
mode: 'no-cors',
Александр Мельник
18 июля 2023, 17:17
0
Если делаю этот же запрос, но через postman, выбрав body->row-json
то запрос на сервер приходит с корретным Content-Type.

Так же проверил, что fetch автодектит тип данных и если совсем удалить заголовок и передать в запросе FormData, то он подставит заголовок корректный.
И я даже согласен с тем, что json по своей сути это текст, а значит можно сказать что fetch передал по умолчанию заголовок Content-Type:text/html, но почему он игнорирует заданный в парметрах заголовок, пока для меня загадка.
ruslan
18 июля 2023, 15:44
0
загрузить получилось на 2.8.4-pl
но как только пытаюсь в него войти — 504 Gateway Time-out
Сергей Карпович
18 июля 2023, 11:15
0
Сам разобрался.
В чанке выода карты, перед последними скобками можно добавить дополнительную логику, например отключение скрола:
[[+mapId]].behaviors
        // Отключаем часть включенных по умолчанию поведений:
        //  - drag - перемещение карты при нажатой левой кнопки мыши;
        //  - magnifier.rightButton - увеличение области, выделенной правой кнопкой мыши.
        .disable(['scrollZoom', 'drag', 'rightMouseButtonMagnifier'])
steve.kon
17 июля 2023, 14:52
0
То, что нужно! Большое спасибо!
Daniel
17 июля 2023, 13:57
+1
Вопрос был задан давно, но вдруг кому-то будет полезно.

Дело в том, что modx по умолчанию не запускает парсер fenom, пока не обнаружит соответствующий токен.
Вероятно
{rand(1,10)}
не является таким токеном.

Подобное поведение можно так же заметить и с комментариями.

Если отсутствуют другие теги fenom, то комментарий вида:
{* Комментарий *}
будет выведен как текст.
Как только добавим другие теги феном — комментарий вырезается из финального вывода.
Сергей Карпович
17 июля 2023, 12:26
0
Привет, подскажите, есть параметр в сниппете на отключение скрола мышкой, или это нужно добавлять в чанк вывода карты уже?
дмитрий
16 июля 2023, 20:16
0
приветствую, нашлось решение?
Александр Туниеков
16 июля 2023, 17:24
0
Вообще идея новой CMS меня стала преследовать с появлением MODX3. Например мой getTables в нем сейчас работает, но используемые функции объявлены деприкейтед. То есть в любой момент getTables может перестать работать. И на модели MODX3 не перейдешь. Нет там нужного функционала. То есть фактически MODX3 убивает 2 года моей работы :-(.
Александр Туниеков
16 июля 2023, 17:15
0
Вообще 150 мс инициализация ядра? У меня инициализация на шаредах обычно 20....40мс. Поэтому, думаю что все это зависит от хостинга.
Где-то прочитал что 150мс :-(. Чет сам не проверял :-(. Я делал при старте сервера закидывать сниппеты и чанки в объект js. То есть закидывал прямо в память. Доступ тогда к ним быстрее чем брать из базы или диска. Только парсер время съедает. Так бы наверно и в 1мс можно было уложиться :-).
Мне например хватает того что есть, а если не хватает, я беру Vue и делаю modx+vue — это и дешевле и быстрее во много раз лично для меня.
vue относительно прост, но по сравнению с возьми готовый сниппет и вставь его в html шаблон vue капец как сложный :-). На модекс делают сайты и не совсем програмисты. Просто так сказать менеджеры с пониманием html.
Я вот например тоже иногда делаю не популярные в MODX вещи, и думаете они стреляют? фиг. )))) так что серьезно подумайте с холодным расчётом надо оно вам или нет.
Ну 99% не стреляет. Стреляет если вдруг удалось попасть в нужный момент в нужное место :-)
Александр Туниеков
16 июля 2023, 16:47
0
Если нельзя сделать платную установку, значит надо делать проверку «лицензии» после установки, если её нет — блокировать работу компонента.
Чет не нравиться мне этот вариант. Проверку лицензии можно отключить. Как впрочем и блокирование нежелательных магазинов. Но тут все равно надо делать сайт с продажей «лицензии» и смысл продавать только лицензию если можно весь пакет продавать.
Поскольку речь идёт о движке, пользователь захочет иметь возможность быстро реализовать какой-то функционал, типа магазина, блога, лэндинга. Возьмём, например, MODX3, я делал на нём сайт визитку, как бы самый простой вариант сайта, для реализации мне понадобились: визуальный редактор, Migx, FormIt, AjaxForm, pdoTools.
Эти пакеты в минимальной конфигурации можно сделать на уровне ядра. Я думаю для допмодулей надо компоненты посложнее делать. А аналоги этих включить в стандартную поставку. Работы много конечно и один я наверно не справлюсь, но это не так уж и много работы. Модулей ноде много и много чего уже реализованно. Все с нуля писать не надо.
Второй момент, если ты делаешь CMS похожую на Modx, то, вероятно, рассчитываешь, что те, кто используют Modx, заинтересуются твоей разработкой, НО у тебя Node.JS, что совсем не то же самое, что PHP, для многих это будет проблемой. Чем твоя CMS будет похожа на Modx?
Я не планирую прям перетягивать с модекс. Я подсел на модекс из-за низкого порога входа. Просто вставляешь в html сниппеты прописываешь им параметры и получаешь нужный функционал. Вот чем охота повторить модекс. Чтобы для того чтобы сделать достаточно функциональный сайт нужно минимум знаний и делается сайт очень быстро. С минишоп2 простой магазин можно развернуть за день. И что еще важно его можно в каких-то пределах легко кастомизировать с минимальными знаниями и можно допиливать функционал постепенно разбираясь что в нем как устроенно изнутри.
То есть, я хочу CMS с более-мение современной начинкой, но чтоб в ней было начать работать также просто как и в модекс. Я хочу привлекать новичков и так же чтоб CMS была удобна для профессионалов.
Правда чтоб вставлять сниппеты в код надо парсить html и чанки, а это медленней чем компоненты реакт или vue. Но в это легче вникнуть чем в vue. То есть, основа CMS html шаблоны и чанки, js сниппеты и модель вариэбле — аналог tv.
Артур Шевченко
16 июля 2023, 14:15
0
Конечно есть, надо переписать метод который грузит картинки так, чтобы он грузил в ms2Gallery
Сергей С
16 июля 2023, 14:13
0
А есть Вариант привязать изображения к ms2Gallery. Сейчас грузит в стандартную галерею минишопа.
Сергей С
16 июля 2023, 14:00
0
Да. Все это было. проблема оказалась в категориях.Их не было и импорт тормозил на этом этапе. Включил создание категорий. Теперь все работает, спасибо!