2 / 2 / 2
Регистрация: 01.02.2022
Сообщений: 21

JavaScript - Не принимается POST- запрос

02.05.2022, 16:41. Показов 825. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите, пожалуйста, в решении вопроса, кто разбирается и в NET CORE MVC и в JavaScript. Back-end на .NET 5.0, на front-end подключен только bootstrap 5. С авторизованной страницы пользователя пытаюсь отправить по событию клик форму, на защищенный контроллер, но мне возвращается 400я ошибка. Как на защищенный метод контроллера отправить Post-запрос с данными с помощью fetch.

Метод контроллера на .NET 5
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   [Authorize]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult AddItemToStore([FromBody] StoreUser itemsStore)
    {
        StoreUser str = new StoreUser
        {
 
            Id = 1,
            UserId = itemsStore.UserId,
            CatrgoryId = itemsStore.CatrgoryId
        };
 
        return Ok(str);
    }


JS-код

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var buttonAddOrder = document.getElementById("addToOrder");
 
buttonAddOrder?.addEventListener("click", function () {
    var catId = document.querySelector("#formToStore input[name = 'cardId']").value;
    var userId = document.querySelector("#formToStore input[name = 'userId']").value;
    var antiForgeryToken = document.querySelector("#formToStore input[name = '__RequestVerificationToken']").value;
    var itemsStore = {
        __RequestVerificationToken: antiForgeryToken,
        UserId: userId,
        CatrgoryId: catId,
        Payed: false
    };
    var url = "/CategoriesToUser/AddItemToStore"; 
    
 
    var response = fetch(url, {
        method: 'POST',
        mode: 'cors',
        cache: 'no-cache',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8;'
        },
        body: {
            __RequestVerificationToken: antiForgeryToken,
            itemsStore: itemsStore
        }
    })
        .then((response) => {
            return response.json();
        }).catch((e) => console.log(e.message));
    console.log('buttonAddOrder', response);
   
});

Форма

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  <form id="formToStore"  method="post" enctype="multipart/form-data">
                <input type="hidden" name="cardId" id="cardId" />
                @{
                    var getUser = await UserManager.GetUserAsync(User);
                   
                }
                <input type="hidden" name="userId" asp-for="@getUser.Id" />
 
                <div class="modal-footer">
                    <button type="button" id="buttonclose" name="buttonclose" class="buttonclose btn btn-secondary" data-bs-dismiss="modal">Close</button>
 
                    <button type="button"
                            id="addToOrder" name="addToOrder"                           
                            class="btn btn-primary"                           
                         >
                        Add to Order
                    </button>
                </div>
            </form>


Такой вариант тоже не проходит
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var buttonAddOrder = document.getElementById("addToOrder");
 
 
buttonAddOrder?.addEventListener("click", function () {
  
    var url = "/CategoriesToUser/AddItemToStore";
    const  formToStore = document.getElementById('formToStore');
    var formOrder = new FormData(formToStore);
   
    let response = fetch(url, {
        method: 'POST',
        mode: 'cors',
        cache: 'no-cache',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8;'
        },
        body: formOrder
    })
        .then((response) => {
            return response.json();
        }).catch((e) => console.log(e.message));
    console.log('buttonAddOrder', response);
   
});

Скрины ошибки запроса.
Миниатюры
JavaScript - Не принимается POST- запрос   JavaScript - Не принимается POST- запрос   JavaScript - Не принимается POST- запрос  

JavaScript - Не принимается POST- запрос  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2022, 16:41
Ответы с готовыми решениями:

Отправить Post запрос средствами JavaScript
Собственно сабж. Пробовал сделать втупую: &lt;form id = 'manForm' action = 'man.php' method = 'post' hidden = 'true'&gt; &lt;input...

POST GET запрос к javascript
Помогите на решением моей задачи Есть блок div, после нажатия на кнопку происходит javascript, в этот блок вставляется капча. Мне надо...

Перевести Post запрос JavaScript на PHP
if($is_echo == TRUE) { $AddMedal = &lt;&lt;&lt;HTML &lt;script type=&quot;text/javascript&quot;&gt; function AddMedal(){ ShowLoading(); ...

1
2 / 2 / 2
Регистрация: 01.02.2022
Сообщений: 21
04.05.2022, 20:18  [ТС]
Лучший ответ Сообщение было отмечено DrType как решение

Решение

Нашел решения, может кому будет полезно.

1.From Body:

View

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<form id="formToStore" method="post" enctype="multipart/form-data">
  <input type="hidden" name="cardId" id="cardId" value="1" /> 
  <input type="hidden" name="userId" value="466788cb-6aab-4798-81f1-f6b05cb71e32"/>
 
  <div class="modal-footer">
    <button type="button" id="buttonclose" name="buttonclose" class="buttonclose btn btn-secondary" data-bs-dismiss="modal">Close</button>
 
    <button type="button" id="addToOrder" name="addToOrder" class="btn btn-primary">Add to Order</button>
  </div>
</form>
@section Scripts
{
    <script>
        var buttonAddOrder = document.getElementById("addToOrder");    
        buttonAddOrder?.addEventListener("click", function () {
            var catId = document.querySelector("#formToStore input[name = 'cardId']").value;
            var userId = document.querySelector("#formToStore input[name = 'userId']").value;
            var antiForgeryToken = document.querySelector("#formToStore input[name = '__RequestVerificationToken']").value;
            var itemsStore = {
               // __RequestVerificationToken: antiForgeryToken,  //remove this....
               UserId:userId,
               CatrgoryId: catId,
               Payed: false
            };
            var url = "/CategoriesToUser/AddItemToStore";          
            var response = fetch(url, {
                method: 'POST',
                mode: 'cors',
                cache: 'no-cache',
                headers: {
                    'Content-Type': 'application/json',          //change here...
                    "X-ANTI-FORGERY-TOKEN": antiForgeryToken,    //add this.....    
                },
                body: JSON.stringify(itemsStore)          //change here.....                   
            })
            .then((response) => {
                return response.json();
            }).catch((e) => console.log(e.message));
 
        })
    </script>
}
Controller

C#
1
2
3
4
5
6
7
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult AddItemToStore([FromBody] StoreUser itemsStore)
{
    //do your stuff....
    return Ok(itemsStore);
}
Startup.cs:

C#
1
services.AddAntiforgery(x => x.HeaderName = "X-ANTI-FORGERY-TOKEN");
2.From Form:
View

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<form id="formToStore" method="post" enctype="multipart/form-data">
 
                      @*change name="cardId" to name="CatrgoryId"*@
  <input type="hidden" name="CatrgoryId" id="cardId" value="1" />  
  <input type="hidden" name="userId" value="466788cb-6aab-4798-81f1-f6b05cb71e32"/>
  <div class="modal-footer">
    <button type="button" id="buttonclose" name="buttonclose" class="buttonclose btn btn-secondary" data-bs-dismiss="modal">Close</button>
    <button type="button" id="addToOrder" name="addToOrder" class="btn btn-primary">Add to Order</button>
  </div>
</form>
@section Scripts
{
    <script>
        var buttonAddOrder = document.getElementById("addToOrder");
        buttonAddOrder?.addEventListener("click", function () {
        var url = "/CategoriesToUser/AddItemToStore";
        const  formToStore = document.getElementById('formToStore');
        var formOrder = new FormData(formToStore);
 
        let response = fetch(url, {
            method: 'POST',
            mode: 'cors',
            cache: 'no-cache',
            //headers: {
            //    'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8;'
            //},                             //don't need to set the Content-Type header
            body: formOrder   
        })
            .then((response) => {
                return response.json();
            }).catch((e) => console.log(e.message));
 
        })
    </script>
}
Controller
Меняем [FromBody] на [FromForm]

C#
1
2
3
4
5
6
7
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult AddItemToStore([FromForm] StoreUser itemsStore)
{
    //do your stuff...
    return Ok(itemsStore);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2022, 20:18
Помогаю со студенческими работами здесь

POST запрос с телом в Json формате (пример на JavaScript)
Как переделать данный запрос на C#? const request = require('request'); request({ method: 'POST', url:...

Не принимается json запрос на контроллер
Я отправляю запрос так, и статус ответ 404,сервер не отвечает. Но сам запрос посылается. function sendFormData() { ...

Почему запрос не принимается? (Введите значение параметра ills_medi.medi_id)
Всем привет, Я делаю запрос в Access'e следующего вида: SELECT medicament, desc_medi, img_link FROM medi WHERE...

Как сделать запрос SELECT с произвольным именем столбца, которое принимается в функцию в виде character(n) в PostgeSQL?
Добрый день Есть функция: CREATE OR REPLACE FUNCTION GetAllDeviceData(character varying(20)) RETURNS integer AS $$ DECLARE ...

Послать POST запрос запрос с двумя и более параметрами?
Делаю так: string ProxyString = &quot;&quot;; string URI = @&quot;http://www.easyprog.ru/test.php&quot;;; string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru