сервер, работающий на локальном хосте: 8080 получает CORS от внешнего интерфейса, работающего на 9090 - PullRequest
0 голосов
/ 29 декабря 2018

У меня на локальном хосте работает API-сервер (gin-gonic): 8080.Все типичные CORS-заголовки настроены на отладку: когда я пытаюсь протестировать API с помощью простого интерфейса (swagger-ui), я получаю CORS-ошибку.(swagger работает на localhost: 9090)

Работает, когда все работает в одном домене.

c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Headers", "*")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")

, почему это не работает.Должны ли 3 строки не оставить все проблемы с CORS?

Мне очень любопытны фактические объяснения, а не простое решение.Все ресурсы, касающиеся этого (или хорошего о CORS), приветствуются.

Он прекрасно работает в Postman или CURL

Сообщение об ошибке в браузере: CORS Error Message

1 Ответ

0 голосов
/ 30 декабря 2018

Когда вы перехватываете OPTION как запрос Preflight, ваш сервер должен возвращать успехЯ не могу найти возврат в указанном вами коде.

Также вы можете попробовать использовать https://github.com/rs/cors

package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
    cors "github.com/rs/cors/wrapper/gin"
)

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

    router.Use(cors.Default())
    router.GET("/", func(context *gin.Context) {
        context.JSON(http.StatusOK, gin.H{"hello": "world"})
    })

    router.Run(":8080")
}
...