Проблема с Cors при доступе к остальным вызовам остова golang iris в интерфейсе - PullRequest
0 голосов
/ 09 октября 2018

Я использую Golang Iris Framework для добавления пользователей через остальные вызовы.Это мой код

package main

import (
    "fmt"

    "github.com/iris-contrib/middleware/cors"
    "github.com/kataras/iris"
)

type User struct {
    Name string
}

func main() {
    app := iris.New()

    crs := cors.New(cors.Options{
        AllowedOrigins:   []string{"*"},
        AllowedMethods:   []string{"GET", "POST", "DELETE"},
        AllowCredentials: true,
    })
    app.Use(crs)
    //
    app.Post("/send", func(ctx iris.Context) {
        // deployment Object
        name := User{}
        ctx.ReadJSON(&name)
        fmt.Println(name)
    })

    app.Run(iris.Addr("localhost:8080"))
}

Работает нормально.Но я получаю ошибку cors в передних вызовах ajax.Я добавил варианты Cors.Но все равно я получаю сообщение об ошибке ниже.

    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the 
remote resource at http://localhost:8080/send. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).  (unknown)

Я не могу найти, что это за ошибка.Пожалуйста, помогите решить эту проблему.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Вы должны разрешить HTTP-метод OPTIONS для своего Party/Group или всего приложения, используя функцию .AllowMethods(iris.MethodOptions).Пример https://github.com/kataras/iris/blob/master/_examples/experimental-handlers/cors/simple/main.go уже показывает вам путь.

package main

import (
    "fmt"

    "github.com/iris-contrib/middleware/cors"
    "github.com/kataras/iris"
)

type User struct {
    Name string
}

func main() {
    app := iris.New()

    crs := cors.New(cors.Options{
        AllowedOrigins:   []string{"*"},
        AllowedMethods:   []string{"GET", "POST", "DELETE"},
        AllowCredentials: true,
    })
    app.Use(crs)
    //
    app.AllowMethods(iris.MethodOptions) // <- HERE
    app.Post("/send", func(ctx iris.Context) {
        // deployment Object
        name := User{}
        ctx.ReadJSON(&name)
        fmt.Println(name)
    })

    app.Run(iris.Addr("localhost:8080"))
}
...