Rumah pembangunan bahagian belakang Golang Gunakan CORS dalam rangka kerja Beego untuk menyelesaikan masalah merentas domain

Gunakan CORS dalam rangka kerja Beego untuk menyelesaikan masalah merentas domain

Jun 04, 2023 pm 07:40 PM
Domain silang cors beego

Dengan pembangunan aplikasi web dan globalisasi Internet, semakin banyak aplikasi perlu membuat permintaan merentas domain. Permintaan silang asal ialah masalah biasa bagi pembangun bahagian hadapan, dan ia boleh menyebabkan aplikasi tidak berfungsi dengan betul. Dalam kes ini, salah satu cara terbaik untuk menyelesaikan masalah permintaan silang asal ialah menggunakan CORS.

Dalam artikel ini, kami akan menumpukan pada cara menggunakan CORS untuk menyelesaikan masalah merentas domain dalam rangka kerja Beego.

Apakah permintaan merentas domain?

Dalam aplikasi web, permintaan merentas domain merujuk kepada menghantar permintaan daripada halaman web satu nama domain kepada pelayan nama domain yang lain. Biasanya, data permintaan dan respons berada dalam domain yang sama, bermakna mereka menggunakan protokol, port dan jenis protokol yang sama. Walau bagaimanapun, penyemak imbas biasanya melarang permintaan merentas domain atas sebab keselamatan.

Untuk projek dengan bahagian hadapan dan belakang yang berasingan, isu permintaan merentas domain adalah perkara biasa. Contohnya, apabila menulis aplikasi menggunakan Vue pada bahagian hadapan, anda mungkin perlu menghantar permintaan Ajax ke pelayan bahagian belakang tertentu untuk mendapatkan data. Jika pelayan bahagian hadapan dan pelayan bahagian belakang tidak berada di bawah nama domain yang sama, penyemak imbas akan menolak permintaan dan memaparkan ralat walaupun permintaan itu ditulis dengan betul pada tahap kod. Ini ialah masalah permintaan merentas domain.

Apakah itu CORS?

CORS ialah singkatan kepada Perkongsian Sumber Silang Asal. Ia adalah mekanisme berdasarkan protokol HTTP yang membolehkan aplikasi web mengakses sumber merentas domain. Kemunculan mekanisme CORS adalah terutamanya untuk menyelesaikan masalah permintaan silang domain yang disebutkan di atas.

Mekanisme CORS dilaksanakan oleh penyemak imbas, yang menggunakan pengepala HTTP tambahan untuk memberitahu penyemak imbas sumber mana yang dibenarkan untuk mengakses sumber silang asal. Apabila meminta, penyemak imbas akan menyemak maklumat pengepala respons Jika medan Access-Control-Allow-Origin wujud dalam maklumat pengepala respons, dan nilai medan ini sepadan dengan nama domain dan nombor port yang diminta, penyemak imbas membenarkan silang- permintaan domain.

Menggunakan CORS dalam Beego

Dalam Beego, kita boleh menggunakan perpustakaan beego-cors untuk melaksanakan mekanisme CORS. Berikut ialah cara memasang perpustakaan beego-cors:

go get github.com/astaxie/beego/plugins/cors
Salin selepas log masuk

Selepas pemasangan, kami perlu mengimport perpustakaan beego-cors ke dalam aplikasi.

import "github.com/astaxie/beego/plugins/cors"
Salin selepas log masuk

Mengkonfigurasi CORS dalam penghala

Seterusnya, kami akan memperkenalkan cara menggunakan CORS dalam Beego. Jika aplikasi anda adalah projek baharu, maka anda boleh menetapkannya semasa memulakan aplikasi seperti berikut:

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()
}
Salin selepas log masuk

Dalam kod di atas, kami telah menambah penapis yang dipanggil cors menggunakan kaedah InsertFilter . Penapis ini berfungsi pada semua permintaan, jadi kami menggunakan kad bebas * untuk menentukan penghala.

Dalam kaedah Benarkan, kami mengkonfigurasi sumber, kaedah dan pengepala untuk dibenarkan. Di sini kami menggunakan * untuk membenarkan semua asal usul. Sudah tentu, anda juga boleh menggunakan nama domain atau alamat IP tertentu untuk mengehadkan sumber yang dibenarkan. Jenis kandungan, kebenaran dan pengepala sumber juga ditetapkan mengikut situasi sebenar.

Dalam medan AllowCredentials, kami menetapkannya kepada benar, yang bermaksud permintaan merentas domain dibenarkan untuk menghantar maklumat kelayakan seperti kuki.

Mengkonfigurasi CORS dalam Pengawal

Selain mengkonfigurasi CORS dalam penghala, kami juga boleh mengkonfigurasi CORS dalam Pengawal. Kaedah ini boleh dikonfigurasikan untuk setiap Pengawal dan mempunyai fleksibiliti yang lebih tinggi. Butirannya adalah seperti berikut:

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!"))
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mendapat medan Asal pengepala permintaan, dan kemudian menetapkannya sebagai pengepala respons Access-Control-Allow-Origin. Ini merupakan langkah penting dalam mekanisme CORS kerana ia memberitahu pelayar sumber yang kami benarkan untuk mengakses sumber.

Kami juga menetapkan pengepala respons Access-Control-Allow-Credentials, Access-Control-Allow-Methods dan Access-Control-Allow-Headers. Fungsi mereka adalah untuk membenarkan penghantaran maklumat kelayakan, kaedah permintaan yang dibenarkan dan medan pengepala permintaan yang dibenarkan.

Akhir sekali, kami menggunakan kaedah Output.Body untuk menghantar data respons kepada pelanggan.

Ringkasan

Dalam artikel ini, kami memperkenalkan apa itu permintaan merentas domain, mekanisme CORS dan cara menggunakan CORS untuk menyelesaikan masalah merentas domain dalam rangka kerja Beego. Untuk projek dengan bahagian hadapan dan belakang yang berasingan, permintaan merentas domain ialah masalah biasa. Masalah ini boleh diselesaikan dengan baik menggunakan mekanisme CORS. Mekanisme CORS boleh dilaksanakan dengan mudah dalam Beego menggunakan perpustakaan beego-cors. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Gunakan CORS dalam rangka kerja Beego untuk menyelesaikan masalah merentas domain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penyelesaian kepada masalah merentas domain Sesi PHP Penyelesaian kepada masalah merentas domain Sesi PHP Oct 12, 2023 pm 03:00 PM

Penyelesaian kepada masalah silang domain PHPSession Dalam pembangunan pemisahan front-end dan back-end, permintaan merentas domain telah menjadi kebiasaan. Apabila menangani isu merentas domain, kami biasanya melibatkan penggunaan dan pengurusan sesi. Walau bagaimanapun, disebabkan oleh sekatan dasar asal penyemak imbas, sesi tidak boleh dikongsi secara lalai merentas domain. Untuk menyelesaikan masalah ini, kita perlu menggunakan beberapa teknik dan kaedah untuk mencapai perkongsian sesi merentas domain. 1. Penggunaan kuki yang paling biasa untuk berkongsi sesi merentas domain

Menggunakan ZooKeeper dan Kurator untuk penyelarasan dan pengurusan yang diedarkan di Beego Menggunakan ZooKeeper dan Kurator untuk penyelarasan dan pengurusan yang diedarkan di Beego Jun 22, 2023 pm 09:27 PM

Dengan perkembangan pesat Internet, sistem teragih telah menjadi salah satu infrastruktur dalam banyak perusahaan dan organisasi. Untuk sistem teragih berfungsi dengan baik, ia perlu diselaraskan dan diuruskan. Dalam hal ini, ZooKeeper dan Curator ialah dua alat yang patut digunakan. ZooKeeper ialah perkhidmatan penyelarasan teragih yang sangat popular yang boleh membantu kami menyelaraskan status dan data antara nod dalam kelompok. Kurator ialah enkapsulasi ZooKeeper

Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Jan 30, 2024 am 09:08 AM

Dalam era perkembangan teknologi yang pesat hari ini, bahasa pengaturcaraan bermunculan seperti cendawan selepas hujan. Salah satu bahasa yang telah menarik perhatian ramai ialah bahasa Go, yang digemari oleh ramai pembangun kerana kesederhanaan, kecekapan, keselamatan serentak dan ciri-ciri lain. Bahasa Go terkenal dengan ekosistemnya yang kukuh dengan banyak projek sumber terbuka yang sangat baik. Artikel ini akan memperkenalkan lima projek sumber terbuka bahasa Go yang dipilih dan membawa pembaca untuk meneroka dunia projek sumber terbuka bahasa Go. KubernetesKubernetes ialah enjin orkestrasi kontena sumber terbuka untuk automatik

Cara menggunakan Flask-CORS untuk mencapai perkongsian sumber merentas domain Cara menggunakan Flask-CORS untuk mencapai perkongsian sumber merentas domain Aug 02, 2023 pm 02:03 PM

Cara menggunakan Flask-CORS untuk mencapai perkongsian sumber merentas domain Pengenalan: Dalam pembangunan aplikasi rangkaian, perkongsian sumber merentas domain (CrossOriginResourceSharing, dirujuk sebagai CORS) ialah mekanisme yang membolehkan pelayan berkongsi sumber dengan sumber atau nama domain yang ditentukan. Menggunakan CORS, kami boleh mengawal penghantaran data secara fleksibel antara domain yang berbeza dan mencapai akses merentas domain yang selamat dan boleh dipercayai. Dalam artikel ini, kami akan memperkenalkan cara menggunakan perpustakaan sambungan Flask-CORS untuk melaksanakan fungsi CORS.

Menggunakan JWT untuk melaksanakan pengesahan dalam Beego Menggunakan JWT untuk melaksanakan pengesahan dalam Beego Jun 22, 2023 pm 12:44 PM

Dengan perkembangan pesat Internet dan Internet mudah alih, semakin banyak aplikasi memerlukan pengesahan dan kawalan kebenaran, dan JWT (JSON Web Token), sebagai mekanisme pengesahan dan kebenaran yang ringan, digunakan secara meluas dalam aplikasi WEB. Beego ialah rangka kerja MVC berdasarkan bahasa Go, yang mempunyai kelebihan kecekapan, kesederhanaan dan skalabiliti Artikel ini akan memperkenalkan cara menggunakan JWT untuk melaksanakan pengesahan dalam Beego. 1. Pengenalan kepada JWT JSONWebToken (JWT) ialah a

Penggunaan dan pengurusan pengeluaran menggunakan Docker dan Kubernetes dalam Beego Penggunaan dan pengurusan pengeluaran menggunakan Docker dan Kubernetes dalam Beego Jun 23, 2023 am 08:58 AM

Dengan perkembangan pesat Internet, semakin banyak perusahaan telah mula memindahkan aplikasi mereka ke platform awan. Docker dan Kubernetes telah menjadi dua alat yang sangat popular dan berkuasa untuk penggunaan dan pengurusan aplikasi pada platform awan. Beego ialah rangka kerja Web yang dibangunkan menggunakan Golang Ia menyediakan fungsi yang kaya seperti penghalaan HTTP, lapisan MVC, pengelogan, pengurusan konfigurasi dan pengurusan Sesi. Dalam artikel ini kami akan membincangkan cara menggunakan Docker dan Kub

Bagaimana untuk membenarkan penggunaan merentas domain imej dan kanvas dalam HTML? Bagaimana untuk membenarkan penggunaan merentas domain imej dan kanvas dalam HTML? Aug 30, 2023 pm 04:25 PM

Untuk membenarkan imej dan kanvas digunakan merentas domain, pelayan mesti menyertakan pengepala CORS (Perkongsian Sumber Silang Asal) yang sesuai dalam respons HTTPnya. Pengepala ini boleh ditetapkan untuk membenarkan sumber atau kaedah tertentu, atau membenarkan mana-mana sumber mengakses sumber tersebut. HTMLCanvasAnHTML5Canvasiskawasan segi empat tepat pada halaman webyang dikawal olehJavaScriptcode.Apa-apa sahaja boleh dilukis bukan kanvas,termasuk imej,bentuk,teks,animasi.Thecanvasisagre

Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials: 5 Syor Rangka Kerja Popular" Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go digemari oleh semakin ramai pembangun. Untuk meningkatkan kecekapan pembangunan dan mengoptimumkan struktur kod, ramai pembangun memilih untuk menggunakan rangka kerja untuk membina aplikasi dengan cepat. Dalam dunia bahasa Go, terdapat banyak rangka kerja yang sangat baik untuk dipilih. Artikel ini akan memperkenalkan 5 rangka kerja bahasa Go yang popular dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. 1.GinGin ialah rangka kerja web yang ringan dengan pantas

See all articles