Axios возвращает ошибку даже при статусе 200

218
09 февраля 2018, 22:45

например есть метод:

   async getComments(data = {}) {
        const result = await HTTP.post('/', data);
        if (result) {
            return result;
        }
    }

ну и сам метод post()

    static post(url, data, params) {
    return axios({
        method: 'POST',
        url: backendDomen + url,
        data: data,
        params: params
    }).then(function (value) {
        console.log(value)
        return value
    }).catch(function (reason) {
        console.log(reason)
        return reason.response
    })
}

Запрос OPTIONS возвращает статус 200, хедеры, но запрос POST не идет а в консоли я вижу ошибку

Error: Network Error at createError (createError.js:16) at XMLHttpRequest.handleError (xhr.js:87)

на сервере:

 func main() {
    gocron.Every(1).Hour().Do(writeInDB)
    router := mux.NewRouter()
    router.HandleFunc("/", List)
    log.Fatal(http.ListenAndServe(":8080", router))
}

хендлер:

func List(response http.ResponseWriter, request *http.Request)  {
    var results CommentsCollection
    response.Header().Set("Content-type", "application/json; charset=UTF-8")
    response.Header().Set("Access-Control-Allow-Origin", "http://localhost:3000")
    response.Header().Set("Access-Control-Request-Method", "GET, POST")
    response.Header().Set("Access-Control-Allow-Headers", "Content-Type")
    response.WriteHeader(http.StatusOK)

    body, err := ioutil.ReadAll(io.LimitReader(request.Body, 1048576))
    if err != nil {
        panic(err)
    }
    if err := request.Body.Close(); err != nil {
        panic(err)
    }
    var dateInterval DateInterval
    if err := json.Unmarshal(body, &dateInterval); err != nil {
        if err := json.NewEncoder(response).Encode(err); err != nil {
            panic(err)
        }
    }
    session, err := mgo.Dial(MongoHost)
    if err!= nil {
        panic(err)
    }
    defer session.Close()
    session.SetMode(mgo.Monotonic, true)
    var emptyTime time.Time
    var err2 error
    if dateInterval.Start != emptyTime && dateInterval.End != emptyTime {
        err2 = session.DB("parser").C("comments").Find(bson.M{"date": bson.M{"$gte": dateInterval.Start, "$lte": dateInterval.End}}).All(&results)
    } else {
        err2 = session.DB("parser").C("comments").Find(nil).All(&results)
    }
    if err2 != nil {
        panic(err2)
    }
    jsonResponse, err := json.Marshal(results)
    if err != nil {
        fmt.Println(err)
    }
    io.WriteString(response, string(jsonResponse))
}
Answer 1

200 у OPTIONS, означает лишь то, что удалось получить параметры соединения с ресурсом. Они (параметры) могут совпасть с параметрами вашего запроса, могут не совпасть. Если не совпадают, то на основной запрос вы получите что-то вроде: 405 Method Not Allowed. Но это так, к слову.

А вам надо в catch, написать console.log(reason.response) вместо console.log(reason). Должно помочь.

READ ALSO
wex.nz Public API «Access-Control-Allow-Origin»

wex.nz Public API «Access-Control-Allow-Origin»

Добрый день, вопрос в следующем, использую Public API wexnz для получения курсов валют

269
Не передаются данные из response в state

Не передаются данные из response в state

Данные приходят с сервера, но не попадают в state (использовал breakpoint) и поэтому, как я понял, ломается map()Хотелось бы узнать, что я делают не так

238
Server Rendered Vue Nuxt

Server Rendered Vue Nuxt

Мне нужны советыХочу на сервере выполнить функцию с помощью nuxt

244
ссылка a href для карты google maps

ссылка a href для карты google maps

Подскажите,пожалуйста,как сослатся на маркер google maps например

184