#javascript #jquery #asp.net #asp.net-mvc
#javascript #jquery #asp.net #asp.net-mvc
Вопрос:
Я пытаюсь настроить защиту CSRF в asp.net mvc, но у меня возникли проблемы с Ajax. Это ошеломляет, почему.
Я использую встроенный токен mvc, который выглядит так на странице:
<input name="__RequestVerificationToken" type="hidden" value="gnAeuskcQCq bjF5bSKg/wyed65M2XNedTPmvKu/ tzCe1GEmIhyeUnurdMgg0ORjfkCBjyOYe78WS6TdJaPSeECTl7w5yjzgwb6TSLjR74cYE4Bd4lJ9YgBGCTyYXur 39inD60jtQh7VciTlM2ap9/YLim/RSCNMxbrs KMZM=" />
Проблема в том, что когда я получаю значение с помощью jquery, оно отличается от того, что находится на странице. Поэтому, когда я делаю это:
requestVerifStr = $(document.getElementsByName("__RequestVerificationToken")).val();
Я получаю это значение:
X1WV xrlkKXYjmLZS OpPfjgeEPGjM/CjOSk0nKwV6iu3rCpHAo2XIDlJcX2ef4hBnK/BYrZw6xICQWqd8a7yJOjngDn1Yf7AKEl2uwLAtMXQQuRJkCzpq lOWVv1Jyuud6dEIRiaXT0koGDxycps9wQoXvvnMlF1/4G5LDp9Y0=
Я предполагаю, что jquery выполняет какое-то преобразование.
Комментарии:
1. Рассмотрите возможность фактического использования jQuery:
$('[name=__RequestVerificationToken]').val()
2. Это не исправление, это предложение. Что касается вашего вопроса … разве это не фактическое значение? Это похоже на фактическое значение. Что вы видите в исходном коде?
3. Есть ли на странице более одной формы (несколько форм?): alert($(‘[name=__RequestVerificationToken]’).длина)
4. Похоже, здесь работает: jsfiddle.net/G88jG
5. Невозможно воспроизвести: jsfiddle.net/AUYPe
Ответ №1:
Казалось бы, существует несколько входных данных с name="__RequestVerificationToken"
и .val() возвращает только первый результат.
Вот пример того, как это произойдет: http://jsfiddle.net/4qA9V /