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 :
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é.
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.
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 :
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!