Maison développement back-end Golang Utilisez CORS dans le framework Beego pour résoudre des problèmes inter-domaines

Utilisez CORS dans le framework Beego pour résoudre des problèmes inter-domaines

Jun 04, 2023 pm 07:40 PM
跨域 cors beego

Avec le développement des applications web et la mondialisation d'Internet, de plus en plus d'applications doivent effectuer des requêtes cross-domaines. Les requêtes inter-domaines sont un problème courant pour les développeurs front-end et peuvent empêcher les applications de fonctionner correctement. Dans ce cas, l’un des meilleurs moyens de résoudre le problème des requêtes d’origine croisée consiste à utiliser CORS.

Dans cet article, nous nous concentrerons sur la façon d'utiliser CORS pour résoudre des problèmes inter-domaines dans le framework Beego.

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

Dans les applications Web, les requêtes inter-domaines font référence à l'envoi de requêtes depuis une page Web d'un nom de domaine vers un serveur d'un autre nom de domaine. En règle générale, les données de requête et de réponse se trouvent dans le même domaine, ce qui signifie qu'elles utilisent le même protocole, le même port et le même type de protocole. Cependant, les navigateurs interdisent généralement les requêtes inter-domaines pour des raisons de sécurité.

Pour les projets avec front-end et back-end séparés, les problèmes de requêtes inter-domaines sont très courants. Par exemple, lors de l'écriture d'une application utilisant Vue sur le front-end, vous devrez peut-être envoyer une requête Ajax à un certain serveur back-end pour obtenir des données. Si le serveur front-end et le serveur back-end ne sont pas sous le même nom de domaine, le navigateur rejettera la requête et affichera une erreur même si la requête est écrite correctement au niveau du code. Il s'agit d'un problème de requête inter-domaines.

Qu’est-ce que CORS ?

CORS est l'abréviation de Cross-Origin Resource Sharing. Il s'agit d'un mécanisme basé sur le protocole HTTP qui permet aux applications Web d'accéder à des ressources inter-domaines. L'émergence du mécanisme CORS vise principalement à résoudre les problèmes de requêtes inter-domaines mentionnés ci-dessus.

Le mécanisme CORS est implémenté par le navigateur, qui utilise des en-têtes HTTP supplémentaires pour indiquer au navigateur quelles sources sont autorisées à accéder aux ressources multi-origines. Lors de la demande, le navigateur vérifiera les informations d'en-tête de réponse. Si le champ Access-Control-Allow-Origin existe dans les informations d'en-tête de réponse et que la valeur de ce champ correspond au nom de domaine et au numéro de port demandés, le navigateur autorise le croisement. demande de domaine.

Utiliser CORS dans Beego

Dans Beego, nous pouvons utiliser la bibliothèque beego-cors pour implémenter le mécanisme CORS. Voici comment installer la bibliothèque beego-cors :

go get github.com/astaxie/beego/plugins/cors
Copier après la connexion

Après l'installation, nous devons importer la bibliothèque beego-cors dans l'application.

import "github.com/astaxie/beego/plugins/cors"
Copier après la connexion

Configuration de CORS dans le routeur

Ensuite, nous présenterons comment utiliser CORS avec Beego. Si votre application est un nouveau projet, vous pouvez la définir lors de l'initialisation de l'application comme suit :

package main

import (
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/plugins/cors"
)

func main() {
    beego.BConfig.Listen.HTTPAddr = "0.0.0.0"
    beego.BConfig.Listen.HTTPPort = 8080

    beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
        AllowOrigins: []string{"*"},
        AllowMethods: []string{"PUT", "PATCH", "GET", "POST", "DELETE", "OPTIONS"},
        AllowHeaders: []string{"Origin", "Content-Type", "Authorization"},
        ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin"},
        AllowCredentials: true,
    }))

    beego.Run()
}
Copier après la connexion

Dans le code ci-dessus, nous avons ajouté un filtre appelé cors en utilisant la méthode InsertFilter. Ce filtre fonctionne sur toutes les requêtes, nous utilisons donc le caractère générique * pour spécifier le routeur.

Dans la méthode Allow, nous configurons les sources, les méthodes et les en-têtes à autoriser. Ici, nous utilisons * pour autoriser toutes les origines. Bien entendu, vous pouvez également utiliser des noms de domaine ou des adresses IP spécifiques pour limiter les sources autorisées. Le type de contenu, l'autorisation et l'en-tête source sont également définis en fonction de la situation réelle.

Dans le champ AllowCredentials, nous le définissons sur true, ce qui signifie que les requêtes inter-domaines sont autorisées à envoyer des informations d'identification telles que des cookies.

Configurer CORS dans le contrôleur

En plus de configurer CORS dans le routeur, nous pouvons également configurer CORS dans le contrôleur. Cette méthode peut être configurée pour chaque contrôleur et offre une plus grande flexibilité. Les détails sont les suivants :

package controllers

import (
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/plugins/cors"
)

type TestController struct {
    beego.Controller
}

func (c *TestController) Get() {
    origin := c.Ctx.Request.Header.Get("Origin")
    c.Ctx.Output.Header("Access-Control-Allow-Origin", origin)
    c.Ctx.Output.Header("Access-Control-Allow-Credentials", "true")
    c.Ctx.Output.Header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
    c.Ctx.Output.Header("Access-Control-Allow-Headers", "Content-Type,Authorization")
    c.Ctx.Output.Header("Content-Type", "application/json; charset=utf-8")

    c.Ctx.Output.Body([]byte("Hello, world!"))
}
Copier après la connexion

Dans le code ci-dessus, nous obtenons d'abord le champ Origin de l'en-tête de requête, puis le définissons comme en-tête de réponse Access-Control-Allow-Origin. Il s'agit d'une étape importante dans le mécanisme CORS car elle indique au navigateur quelles sources nous autorisons à accéder aux ressources.

Nous définissons également les en-têtes de réponse Access-Control-Allow-Credentials, Access-Control-Allow-Methods et Access-Control-Allow-Headers. Leurs fonctions sont de permettre l'envoi d'informations d'identification, de méthodes de requête autorisées et de champs d'en-tête de requête autorisés.

Enfin, nous utilisons la méthode Output.Body pour envoyer les données de réponse au client.

Résumé

Dans cet article, nous avons présenté ce que sont les requêtes inter-domaines, le mécanisme CORS et comment utiliser CORS pour résoudre les problèmes inter-domaines dans le framework Beego. Pour les projets avec front-end et back-end séparés, les requêtes inter-domaines constituent un problème courant. Ce problème peut être bien résolu en utilisant le mécanisme CORS. Le mécanisme CORS peut être facilement implémenté dans Beego à l'aide de la bibliothèque beego-cors. J'espère que cet article vous sera utile.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution au problème inter-domaines de session PHP Solution au problème inter-domaines de session PHP Oct 12, 2023 pm 03:00 PM

Solution au problème inter-domaines de PHPSession Dans le développement de la séparation front-end et back-end, les requêtes inter-domaines sont devenues la norme. Lorsque nous traitons de problèmes interdomaines, nous impliquons généralement l'utilisation et la gestion de sessions. Cependant, en raison des restrictions de la politique d'origine du navigateur, les sessions ne peuvent pas être partagées par défaut entre les domaines. Afin de résoudre ce problème, nous devons utiliser certaines techniques et méthodes pour réaliser le partage de sessions entre domaines. 1. L'utilisation la plus courante des cookies pour partager des sessions entre domaines

Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Jan 30, 2024 am 09:08 AM

À l'ère actuelle de développement technologique rapide, les langages de programmation poussent comme des champignons après la pluie. L'un des langages qui a beaucoup retenu l'attention est le langage Go, apprécié par de nombreux développeurs pour sa simplicité, son efficacité, sa sécurité de concurrence et d'autres fonctionnalités. Le langage Go est connu pour son écosystème solide avec de nombreux excellents projets open source. Cet article présentera cinq projets open source sélectionnés en langage Go et amènera les lecteurs à explorer le monde des projets open source en langage Go. KubernetesKubernetes est un moteur d'orchestration de conteneurs open source pour l'automatisation

Utilisation de ZooKeeper et Curator pour la coordination et la gestion distribuées dans Beego Utilisation de ZooKeeper et Curator pour la coordination et la gestion distribuées dans Beego Jun 22, 2023 pm 09:27 PM

Avec le développement rapide d'Internet, les systèmes distribués sont devenus l'une des infrastructures de nombreuses entreprises et organisations. Pour qu’un système distribué fonctionne correctement, il doit être coordonné et géré. À cet égard, ZooKeeper et Curator sont deux outils qui valent la peine d'être utilisés. ZooKeeper est un service de coordination distribué très populaire qui peut nous aider à coordonner l'état et les données entre les nœuds d'un cluster. Curator est une encapsulation de ZooKeeper

Go : les essentiels du développement linguistique : 5 recommandations de framework populaires Go : les essentiels du développement linguistique : 5 recommandations de framework populaires Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials : 5 recommandations de framework populaires" En tant que langage de programmation rapide et efficace, le langage Go est favorisé par de plus en plus de développeurs. Afin d'améliorer l'efficacité du développement et d'optimiser la structure du code, de nombreux développeurs choisissent d'utiliser des frameworks pour créer rapidement des applications. Dans le monde du langage Go, il existe de nombreux excellents frameworks parmi lesquels choisir. Cet article présentera 5 frameworks de langage Go populaires et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et utiliser ces frameworks. 1.GinGin est un framework Web léger avec une rapidité

Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Jun 23, 2023 am 08:58 AM

Avec le développement rapide d’Internet, de plus en plus d’entreprises ont commencé à migrer leurs applications vers des plateformes cloud. Docker et Kubernetes sont devenus deux outils très populaires et puissants pour le déploiement et la gestion d'applications sur les plateformes cloud. Beego est un framework Web développé à l'aide de Golang. Il fournit des fonctions riches telles que le routage HTTP, la superposition MVC, la journalisation, la gestion de la configuration et la gestion des sessions. Dans cet article, nous expliquerons comment utiliser Docker et Kub

Utiliser JWT pour implémenter l'authentification dans Beego Utiliser JWT pour implémenter l'authentification dans Beego Jun 22, 2023 pm 12:44 PM

Avec le développement rapide d'Internet et de l'Internet mobile, de plus en plus d'applications nécessitent une authentification et un contrôle des autorisations, et JWT (JSON Web Token), en tant que mécanisme léger d'authentification et d'autorisation, est largement utilisé dans les applications WEB. Beego est un framework MVC basé sur le langage Go, qui présente les avantages d'efficacité, de simplicité et d'évolutivité. Cet article explique comment utiliser JWT pour implémenter l'authentification dans Beego. 1. Introduction à JWT JSONWebToken (JWT) est un

Comment utiliser Flask-CORS pour réaliser le partage de ressources entre domaines Comment utiliser Flask-CORS pour réaliser le partage de ressources entre domaines Aug 02, 2023 pm 02:03 PM

Comment utiliser Flask-CORS pour réaliser le partage de ressources entre domaines Introduction : Dans le développement d'applications réseau, le partage de ressources entre domaines (CrossOriginResourceSharing, appelé CORS) est un mécanisme qui permet au serveur de partager des ressources avec des sources ou des noms de domaine spécifiés. Grâce à CORS, nous pouvons contrôler de manière flexible la transmission de données entre différents domaines et obtenir un accès inter-domaines sûr et fiable. Dans cet article, nous présenterons comment utiliser la bibliothèque d'extensions Flask-CORS pour implémenter la fonctionnalité CORS.

Comment autoriser l'utilisation inter-domaines des images et du canevas en HTML ? Comment autoriser l'utilisation inter-domaines des images et du canevas en HTML ? Aug 30, 2023 pm 04:25 PM

Pour permettre l'utilisation d'images et de canevas sur plusieurs domaines, le serveur doit inclure les en-têtes CORS (Cross-Origin Resource Sharing) appropriés dans sa réponse HTTP. Ces en-têtes peuvent être définis pour autoriser des sources ou méthodes spécifiques, ou pour permettre à n'importe quelle source d'accéder à la ressource. HTMLCanvasUn HTML5Canvas est une zone rectangulaire sur une page Web contrôlée par le code JavaScript. Tout peut être dessiné sur le canevas, y compris les images, les formes, le texte et les animations.

See all articles