Зачем получать запрет 403 при получении данных API? - PullRequest
0 голосов
/ 13 июня 2018

Использование react-admin в интерфейсе для доступа к gin разработанному API-интерфейсу.

При обращении к URL-адресу из браузера Chrome:

http://localhost:3000/#/posts

Получил это сообщение из Chrome Console:

fetch.js:41 OPTIONS http://localhost:8080/posts?_end=10&_order=DESC&_sort=id&_start=0 403 (Forbidden)

Но если получить доступ к указанному выше URI из браузера, он может вернуть результат json.

Из вывода gin, разработанного API, получено это сообщение:

[GIN] 2018/06/13 - 16:38:16 | 403 |       1.995µs |             ::1 | OPTIONS  /posts?_end=10&_order=DESC&_sort=id&_start=0

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Установка разрешения доступа разрешить заголовок источника для ответа в приложении на стороне сервера исправит проблему.

Добавить,

'Access-Control-Allow-Origin: http://localhost:3000' or

'Access-Control-Allow-Origin: *' 

в коде на стороне сервера.

0 голосов
/ 06 сентября 2018

Вы должны добавить CORSmiddleware

main.go:

r := gin.Default()
r.Use(CORSMiddleware())

CORSMiddleware:

func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Max-Age", "86400")
        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
        c.Writer.Header().Set("Access-Control-Expose-Headers", "Content-Length")
        c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(200)
        } else {
            c.Next()
        }
    }
}
0 голосов
/ 13 июня 2018

Поскольку внешний и внешний интерфейсы находятся в разных источниках (localhost: 3000 и localhost: 8080 соответственно), вам необходимо настроить CORS на стороне сервера, чтобы localhost: 3000 мог получить к нему доступ.

https://github.com/gin-contrib/cors выглядит как билет на это.

...