Maison  >  Article  >  développement back-end  >  Traitement des requêtes inter-domaines dans le framework de langage Go

Traitement des requêtes inter-domaines dans le framework de langage Go

WBOY
WBOYoriginal
2023-06-03 08:32:452557parcourir

Dans le développement Web, les requêtes inter-domaines sont une exigence courante. Si un site Web doit obtenir des données d'un autre domaine ou appeler une interface API, il doit utiliser des requêtes inter-domaines. Cependant, afin de garantir la sécurité du site Web, le navigateur bloquera ces requêtes, provoquant l'échec des requêtes inter-domaines. Afin de résoudre ce problème, nous devons utiliser certains moyens techniques pour traiter les requêtes inter-domaines. Dans cet article, nous présenterons la méthode de traitement des requêtes inter-domaines dans le framework du langage Go.

Qu'est-ce qu'une requête cross-domain ?

Dans le développement web, les pages front-end sous le même nom de domaine peuvent accéder librement à l'interface back-end sous le même nom de domaine. Cependant, si la page frontale doit appeler une interface sous un autre nom de domaine ou obtenir des données sous ce nom de domaine, elle doit utiliser une requête inter-domaines.

L'essence de la requête inter-domaines est d'envoyer la requête de la page front-end au serveur back-end, puis de recevoir les données renvoyées par le serveur. Cependant, en raison des mécanismes de sécurité du navigateur, les requêtes entre différents noms de domaine sont interdites. Cela entraînera un problème de « politique de même origine », où le navigateur interdit la communication de données entre différentes sources.

Méthodes pour résoudre les requêtes inter-domaines

Afin de résoudre le problème des requêtes inter-domaines, nous pouvons utiliser les méthodes suivantes :

  1. JSONP

JSONP est une méthode de requête inter-domaine simple. Elle introduit un fichier JavaScript externe via la balise de script lors de la requête. Le fichier renverra le résultat de la requête au. fonction de rappel sous la forme d’une fonction de rappel. L'implémentation de JSONP est simple, mais elle ne prend en charge que la méthode de requête GET et présente certains risques de sécurité.

  1. CORS

CORS (Cross-Origin Resource Sharing) est la méthode de requête d'origine croisée recommandée dans la norme HTML5 en définissant Access-. En-tête de réponse Control-Allow-Origin pour autoriser le passage des requêtes sous le nom de domaine spécifié. CORS peut définir plusieurs en-têtes de requête, prend en charge toutes les méthodes de requête HTTP et est plus sécurisé que JSONP.

  1. Agent

La méthode proxy consiste à configurer un serveur proxy côté serveur, puis à envoyer la requête au serveur proxy lorsque le le frontal envoie une requête. Le serveur proxy continue d'envoyer des requêtes au serveur cible et renvoie les résultats de la réponse. La méthode proxy peut résoudre le problème des requêtes inter-domaines, mais elle nécessite une surcharge supplémentaire du serveur et peut entraîner des retards supplémentaires sur le réseau.

Comment gérer les requêtes cross-domaines dans le framework du langage Go ?

Il existe de nombreuses bibliothèques tierces dans le framework du langage Go qui peuvent être utilisées pour gérer les requêtes inter-domaines. Cet article présente les deux types suivants :

    #🎜🎜. #gin-cors
  1. # 🎜🎜#
  2. gin-cors est une bibliothèque middleware CORS basée sur le framework Gin qui peut facilement gérer les requêtes inter-domaines. Utilisez gin-cors pour définir rapidement les informations d'en-tête de requête telles que Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, etc.

cors
  1. cors est une bibliothèque middleware CORS qui prend en charge le langage Go, qui peut facilement ajouter la prise en charge CORS aux serveurs HTTP écrits en Golang. cors peut configurer les informations d'en-tête de demande telles que Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Credentials, etc.

Ce qui suit est un exemple d'utilisation de gin-cors :

package main

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

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

    // 使用cors中间件
    router.Use(cors.Default())

    // 路由
    router.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "hello world",
        })
    })

    router.Run(":8080")
}

Ce qui suit est un exemple d'utilisation de cors :

package main

import "github.com/go-sql-driver/mysql"
import "github.com/rs/cors"
import "github.com/gorilla/mux"

func main() {
    r := mux.NewRouter()

    // 配置跨域请求信息
    c := cors.New(cors.Options{
        AllowedOrigins: []string{"*"},
        AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
        AllowCredentials: true,
        AllowedHeaders: []string{"Authorization", "Content-Type"},
    })

    // 将cors中间件添加到路由器中
    handler := c.Handler(r)

    // 路由
    r.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello World")
    }).Methods("GET")

    http.ListenAndServe(":8080", handler)
}

Conclusion

#🎜🎜 #Les requêtes inter-domaines sont un problème courant dans le développement Web. Il existe de nombreuses bibliothèques tierces dans le framework du langage Go qui peuvent être utilisées pour résoudre ce problème. En utilisant la bibliothèque middleware gin-cors ou cors, nous pouvons facilement ajouter la prise en charge des requêtes inter-domaines à nos applications Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn