|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Здравствуйте! Проблема с прохождением запросов из вне на api-контроллеры. Очень нужна помощь! Проект ASP NET CORE MVC 3. Сервер IIS10. Представления изначально отображаются с помощью контроллеров mvc. Везде где задействованы mvc контроллеры - все работает и на IISExpress и на IIS после деплоя. Часть функционала у меня работает через api-контроллеры, функции JS у меня отправляют запрос на api-контроллеры, и вот API контроллеры после публикации не работают, если запрос идет из вне - выдает ошибку: авторFailed to load resource: the server responded with a status of 400 (Bad Request) автор{type: "https://tools.ietf.org/html/rfc7231#section-6.5.1", title: "Bad Request", status: 400,…} status: 400 title: "Bad Request" traceId: "|1763bd64-457e0bbd74a0ee83." type: "https://tools.ietf.org/html/rfc7231#section-6.5.1" В заголовках запроса и ответа: авторGeneral Request URL: http://195.226.ххх.хх/CollectVoters/api/API/searchStreets Request Method: POST Status Code: 400 Bad Request Remote Address: 195.226.ххх.хх:80 Referrer Policy: strict-origin-when-cross-origin Content-Length: 135 Content-Type: application/problem+json; charset=utf-8 Date: Sun, 25 Jul 2021 11:42:34 GMT Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Response Content-Length: 135 Content-Type: application/problem+json; charset=utf-8 Date: Sun, 25 Jul 2021 11:42:34 GMT Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Request Accept: application/json Accept-Encoding: gzip, deflate Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 Cache-Control: no-cache Connection: keep-alive Content-Length: 43 Content-Type: application/json Host: 195.226.ххх.хх Origin: http://195.226.ххх.хх Pragma: no-cache Referer: http://195.226.ххх.хх/collectvoters/Friends/Create RequestVerificationToken: CfDJ8E_6DbN7jdpPgMFyLYN6J0P0VzaS58Os_XphjMs6pjfQCxYf7ONglfuOTkhJe0fAG-BL6yle7KQOFJ46hExJe61mPCI3u0Ad9VLa1dVwE4p4A55xXzZ10llou70siWF3WBoS5WOyL9ZnXnqfb0QM_OkTbgsFOtGdNp-MWCCPmgAerO9sa7Nj7QBO2OdjlKONdg User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36 X-Requested-With: XMLHttpRequest {IdCity: 10, Name: "Сакмарский"} IdCity: 10 Name: "Сакмарский" API контроллер обрабатывающий запрос: Код: c# 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.
Функция JS осуществляющая ajax запрос: Код: 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.
С самого компа, где стоит IIS запросы уходили нормально (потом запустил на нём IIS Express и полетела авторизация). Изначально он ещё выдавал ошибку: авторPOST http://localhost/api/API/searchStreets 404 (Not Found) jquery.min.js:2 Её удалось решить, для запросов на api-контроллеры в url необходимо ещё было добавлять адрес самого приложения, т.е. указывать не /api/API/searchStreets, как на IISExpress, а /CollectVoters/api/API/searchStreets. По советам в интернете пробовал чистить куки, отключать брендмауер, отключать антивирусник - не помогло. Подскажите пожалуйста, в чем ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2021, 20:11 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Может ли это быть связано с CORS? С одной стороны запрос простой POST, но с другой стороны на лицо доступ к другому домену, а значит «Принцип одинакового источника», который позволяет беспрепятственно получать доступ к контенту и методам уже не работает. Тогда при запросе перед отправкой самого POST-запроса должен отправляться OPTIONS-запрос содержащий заголовки Access-Control-Request-Method и Access-Control-Request-Headers, а сервер должен дать ответ с заголовками - Access-Control-Allow-Methods должен содержать разрешённые методы, Access-Control-Allow-Headers должен содержать список разрешённых заголовков. У меня запрос OPTIONS не отправляется. Есть ещё момент, что вроде OPTIONS-запрос при простых запросах не нужен, но в ответе от сервера другого домена должен быть заголовок Access-Control-Allow-Origin, который должен содержать разрешённый источник, по идее тот, что в заголовке Origin (в моем случае http://195.226.ххх.хх), но в заголовке Origin у меня домен моего сервера, и уже получается, что это не междоменный запрос и источник==сервер. Вот тут я уже запутался. Подскажите, что тут не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2021, 21:43 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Vlad__i__mir Может ли это быть связано с CORS? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2021, 23:56 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Shocker.Pro Vlad__i__mir Может ли это быть связано с CORS? В чем может быть причина тогда? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 07:00 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Shocker.Pro, ещё интересно то, что в какие-то первые запуски приложения этой ошибки не было, а потом после ряда изменений и новых запусков появилась. Но изменений связанных с маршрутизацией никаких не вносил, всё вроде было по алгоритмам ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 08:22 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
у тебя разница в том где ты выкладываешь приложение - локально у тебя запускается на localhost без суб-путей, а на сервер выкладываешь как понимаю как приложение CollectVoters внутри сайта. в скрипте - url: "/api/API/searchStreets" как понимаю будет искать от корня сайта (не приложения). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 09:13 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Алымов Анатолий у тебя разница в том где ты выкладываешь приложение - локально у тебя запускается на localhost без суб-путей, а на сервер выкладываешь как понимаю как приложение CollectVoters внутри сайта. в скрипте - url: "/api/API/searchStreets" как понимаю будет искать от корня сайта (не приложения). Путь он находит: Vlad__i__mirИзначально он ещё выдавал ошибку: авторPOST http://localhost/api/API/searchStreets 404 (Not Found) jquery.min.js:2 Её удалось решить, для запросов на api-контроллеры в url необходимо ещё было добавлять адрес самого приложения, т.е. указывать не /api/API/searchStreets, как на IISExpress, а /CollectVoters/api/API/searchStreets. Он выдает ошибку 400: авторFailed to load resource: the server responded with a status of 400 (Bad Request) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 10:19 |
|
Не проходит запрос на API контроллер на IIS - ошибка 400, на IISExpress запросы проходят
|
|||
---|---|---|---|
#18+
Vlad__i__mir, Shocker.Pro, Причина была в аннотации методов у api-контроллеров Код: c# 1.
Не понятно почему она не отрабатывала как нужно? На страницы был метод формирующий AntiForgeryToken и скрытое поле, в котором он хранился, mvc-контроллеры которые грузили и обновляли страницу и которых также была аннотация ValidateAntiForgeryToken, принимали данный AntiForgeryToken: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
В методе JS отправляющим запрос на сервер этот AntiForgeryToken брался и записывался в заголовок запроса и если смотреть заголовки Request он там присутствует: авторRequest Accept: application/json Accept-Encoding: gzip, deflate Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 Cache-Control: no-cache Connection: keep-alive Content-Length: 43 Content-Type: application/json Host: 195.226.ххх.хх Origin: http://195.226.ххх.хх Pragma: no-cache Referer: http://195.226.ххх.хх/collectvoters/Friends/Create RequestVerificationToken: CfDJ8E_6DbN7jdpPgMFyLYN6J0P0VzaS58Os_XphjMs6pjfQCxYf7ONglfuOTkhJe0fAG-BL6yle7KQOFJ46hExJe61mPCI3u0Ad9VLa1dVwE4p4A55xXzZ10llou70siWF3WBoS5WOyL9ZnXnqfb0QM_OkTbgsFOtGdNp-MWCCPmgAerO9sa7Nj7QBO2OdjlKONdg User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36 X-Requested-With: XMLHttpRequest ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 07:30 |
|
|
start [/forum/topic.php?fid=19&tid=1396634]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 35ms |
total: | 152ms |
0 / 0 |