У меня есть API, в настоящее время я пытаюсь использовать одну из его конечных точек. Конечная точка предназначена для запросов POST, конечная точка работает должным образом. API работает в облаке, я протестировал его с помощью curl
, и он был идеальным, затем из моего приложения для реагирования я попытался использовать его, но получил 403 status code
.
Наблюдая в консоли браузера, я вижу, что получаю эту ошибку при запросе OPTIONS, а POST никогда не выполняется. Вот скриншот результата, отображаемого в консоли:
Затем я сделал простой HTML-файл с формой, поместил туда необходимые входные данные и действие, указывающее на эту конечную точку, и это сработало довольно хорошо. Тогда я не знаю, где будет ошибка? Я включил CORS в API
В API я использую Gorilla/mux, и у меня есть что-то вроде этого:
// Set up a router and some routes
r := mux.NewRouter()
r.HandleFunc("/", handleHome)
//some other routes
headersOk := handlers.AllowedHeaders([]string{"*"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
// Start http server
port := fmt.Sprintf(":%d", SomePort)
http.ListenAndServe(port, handlers.CORS(originsOk, headersOk, methodsOk)(r))
С использованием:
"github.com/gorilla/mux"
"github.com/gorilla/handlers"
Сообщение, которое я получаю в браузере (на испанском языке):
Запрашивать блокировку другого происхождения: политическую информацию о происхождении, читая рекурсию удаленно, на https://miURL (razón: falta la cabecera CORS 'Access-Control-Allow-Origin').
На английском: в основном сервер отклоняет запрос, потому что отсутствует заголовок CORS.
Итак, что я сделал не так в настройках роутера?
osn
— вместе с добавлением Access-Control-Allow-Origin, в котором определенно нет необходимости — и это то, что вызывает Браузер, чтобы выполнить предварительную проверку OPTIONS. И, как также упоминалось в комментариях к этому другому вопросу, проблема заключается в том, что ваш сервер отвечает запросом 403 for OPTIONS на любой URL-адрес, на который вы отправляете запрос. Поэтому вам нужно настроить серверную часть так, чтобы она не требовала аутентификации для запроса OPTIONS на этот маршрут. - person sideshowbarker   schedule 31.08.2017