Cors не работает на групповых маршрутах, связанных с джином и голангом

Я пробую этот конкретный код, но он продолжает давать мне ошибку в

Нет 'Access-Control-Allow-Origin'

package main

import (
    "github.com/gin-contrib/cors"
    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()

    router.Use(cors.Default())

    v1 := router.Group("/api/products")
    {
        v1.GET("/", ListOfProducts)
        v1.POST("/post",AddProduct)
    }
}

Ошибка

введите здесь описание изображения

Мой интерфейс написан на Vue.js и работает на localhost:8000 localhost, а сервер - на localhost:9000


person sinusGob    schedule 13.02.2019    source источник
comment
Каков вывод команды curl -H "Origin: http://localhost:8000" --verbose localhost:9000? Заголовок Access-Control-Allow-Origin: * присутствует?   -  person Зелёный    schedule 13.02.2019
comment
В чем проблема?   -  person sinusGob    schedule 13.02.2019
comment
Спасибо за помощь   -  person sinusGob    schedule 13.02.2019


Ответы (1)


Хорошо, поэтому я попытался воспроизвести это и обнаружил, что делаю неправильный запрос AJAX, возможно, вы сделали ту же ошибку, что и я:

В аналогичной конфигурации:

func main() {
    router := gin.Default()
    router.Use(cors.Default())

    v1 := router.Group("/api")
    {
        v1.GET("/", func(c *gin.Context) {
            c.String(http.StatusOK, "Hello world")
        })
    }

    router.Run()
}

Этот запрос AJAX вызовет ошибку CORS, которую вы получаете:

$.get('http://localhost:8080/api').then(resp => {
  console.log(resp);
});

Но добавление "/" в конце будет работать:

$.get('http://localhost:8080/api/').then(resp => {
  console.log(resp);
});

Итак, в вашем случае попробуйте запросить URL: http://localhost:9000/api/products/ (с косой чертой в конце)

Более того, вы также можете изменить свои маршруты, чтобы они выглядели так:

v1 := router.Group("/api")
{
    v1.GET("/products", ListOfProducts)
    v1.POST("/products/post",AddProduct)
}

Таким образом, вы можете отправить запрос без косой черты в конце :)

person Carlos Martinez    schedule 16.02.2019
comment
Вау, не могу поверить, что потратил почти час на косую черту - person Cozy; 10.12.2020