У меня на странице есть форма с неколькими полями и кнопкой. При нажатии на кнопку данные должны отправляться на сервер и там обрабатываться. Использую стандартные asp контролы: asp:TextBox и asp:Button. В серверной части обрабатываю событие OnClick у кнопки. Если страница не кеширована, то все нормально. Если же нет, то возникает ошибка Provided security token is invalid!
Provided security token is invalid! Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: Bitrix.Security.BXCsrfTokenValidationException: Provided security token is invalid!
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Добрый день! Нашел следующий код для получения токена от Битрикс24
Но при таком подключении создается пустой лид. Если закомментировать строку
Тогда code не приходит.
Может кто сталкивался с подобной проблемой, как ее можно решить?
Простой 1 комментарий
Посмотрите документацию по REST Битрикс24 и как получать/продлять токены – https://dev.1c-bitrix.ru/learning/course/index.php.
1. Создаете приложение 2.
Вас редиректнет на сайт, указанный в настройках приложения с параметром Code
4. Получаете access_token и refresh_token
5. Когда access_token истечет, делаете запрос
Далее шаги 4-5 до бесконечности
Также посмотрите в сторону вебхуков, возможно токен и не понадобится 🙂
«Вас редиректнет на сайт»
ЕЩЕ раз, вас редиректит ТОЛЬКО если вы АВТОРИЗОВАЛИСЬ в портале. Если не авторизовались (а PHP НЕ АВТОРИЗОВАН в портале) то и редиректа не будет, будет форма авторизации.
Автор спрашивает как авторизоватся в портале в Битрикс. И ничего более:
Неверный токен CSRF. Попробуйте повторно отправить форму
Я получаю это сообщение об ошибке каждый раз, когда я пытаюсь отправить форму:
Символ CSRF недействителен. Повторите отправку формы
ОТВЕТЫ
Ответ 1
Вам нужно добавить _token в вашу форму i.e
Или просто добавьте << form_rest(form) >> перед закрывающим тегом формы.
Это отображает все поля, которые еще не были отображены для данного форма. Это хорошая идея всегда иметь это где-то внутри вашей формы так как это сделает скрытые поля для вас и сделает все поля, которые вы забыли чтобы сделать более очевидным (поскольку он отобразит поле для вас).
Ответ 2
Также вы можете увидеть это сообщение об ошибке, если в вашей форме много элементов.
Эта опция в php.ini вызывает проблему
Проблема в том, что поле _token пропускает запрос PUT (GET), поэтому вам нужно увеличить значение.
Также это касается больших файлов. Увеличение
Ответ 3
Это происходит потому, что формы по умолчанию содержат защиту CSRF, которая в некоторых случаях не нужна.
Вы можете отключить эту защиту CSRF в своем классе формы в методе getDefaultOptions следующим образом:
Если вы не хотите отключать защиту CSRF, вам необходимо отобразить поле защиты CSRF в вашей форме. Это можно сделать, используя << form_rest(form) >> в вашем файле вида, например:
<< form_rest(form) >> отображает все поля, которые вы не ввели вручную.
Ответ 4
Перед тегом поставьте:
Он автоматически вставляет другие важные (скрытые) входы.
Ответ 5
В дополнение к предложениям других вы можете получить ошибки токена CSRF, если ваша память сеанса не работает.
В недавнем случае мой коллега изменил «session_prefix» на значение, в котором было пробел.
Это сломало хранилище сеансов, что, в свою очередь, означало, что моя форма не могла получить токен CSRF из сеанса.
Ответ 6
У меня была эта проблема со странным поведением: очистка кеша браузера не исправила его, но очистка файлов cookie (то есть файлов cookie сеанса PHP) решила проблему.
Это нужно сделать после того, как вы проверили все другие ответы, включая проверку того, что у вас есть токен в поле ввода скрытой формы.
Ответ 7
У меня была эта ошибка в последнее время. Оказывается, мои настройки cookie были неправильными в config.yml. Добавление настроек cookie_path и cookie_domain в framework.session исправлено.
Ответ 8
Недавно я столкнулся с той же проблемой, и мой случай был чем-то, о чем здесь еще не говорилось:
Возможно, что-то не так с сеансом при использовании Apache и localhost в качестве домена. Если кто-то может уточнить комментарии, я был бы рад отредактировать этот ответ, чтобы включить больше деталей.
Ответ 9
Если вы не хотите использовать form_row или form_rest и хотите получить доступ к значению _token в шаблоне ветки. Используйте следующее:
Ответ 10
В моем случае у меня возникла проблема с аннотацией maxSize в сущности, поэтому я увеличил ее с 2048 по 2004 год.
надеюсь, что этот ответ поможет!
Ответ 11
Очевидно, что решение состоит в том, чтобы удалить дополнительный закрывающий тег и, возможно, выпить еще немного кофе.
Ответ 12
Я столкнулся с подобной проблемой. Убедившись, что поле токена действительно отображено (см. Принятый ответ), я проверил свои куки. В моем браузере Chrome было 2 (!) Файла cookie для этого домена, по-видимому, потому что я запускал приложение в том же домене, что и другое приложение, но с другим портом (т.е. Mydomain.com установил исходный файл cookie во время работы приложения с ошибками). на mydomain.com:123) Теперь, видимо, Chrome отправил неправильный файл cookie, поэтому защита CSRF не смогла связать токен с правильным сеансом.
Исправление: очистите все куки для данного домена, убедитесь, что вы не запускаете несколько приложений в одном домене с разными портами.
Ответ 13
У меня была та же ошибка, но в моем случае проблема заключалась в том, что мое приложение использовало несколько доменов первого уровня, в то время как cookie использовал один. Удаление cookie_domain: «.%domain%» из framework.session в config.yml приводило к тому, что cookie по умолчанию использовался для любого домена, на котором была форма, и это config.yml проблему.
Ответ 14
Это кажется проблемой при использовании bootstrap, если вы не передаете форму <