Saya mencoba untuk mengirim file ke server saya dengan permintaan posting, tetapi ketika dikirim itu menyebabkan kesalahan:
Bidang tajuk permintaan Konten-Jenis tidak diizinkan oleh Access-Control-Allow-Header.
Jadi saya mencari kesalahan di Google dan menambahkan header:
$http.post($rootScope.URL, {params: arguments}, {headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}
Lalu saya mendapatkan kesalahan:
Bidang tajuk permintaan Access-Control-Allow-Origin tidak diizinkan oleh Access-Control-Allow-Header
Jadi saya meng-google-kannya dan satu-satunya pertanyaan serupa yang bisa saya temukan adalah memberikan jawaban setengah kemudian ditutup sebagai topik. Header apa yang harus saya tambahkan / hapus?
Jawaban:
The Server (bahwa permintaan POST dikirim ke) perlu menyertakan
Access-Control-Allow-Headers
header (dll) dalam tanggapannya . Menempatkan mereka dalam permintaan Anda dari klien tidak berpengaruh.Ini karena terserah server untuk menentukan bahwa ia menerima permintaan lintas-asal (dan bahwa ia mengizinkan
Content-Type
header permintaan, dan sebagainya) - klien tidak dapat memutuskan sendiri bahwa server yang diberikan harus mengizinkan CORS.sumber
Content-Type
?Saya memiliki masalah yang sama. Dalam dokumentasi jQuery saya menemukan:
Jadi, meskipun server memungkinkan permintaan lintas asal tetapi tidak memungkinkan
Access-Control-Allow-Headers
, itu akan melempar kesalahan. Secara default jenis konten sudut adalahapplication/json
, yang mencoba mengirim permintaan OPSI. Cobalah untuk menimpa tajuk standar sudut atau mengizinkanAccess-Control-Allow-Headers
di ujung server. Berikut ini adalah contoh sudut:sumber
or allow Access-Control-Allow-Headers in server end
bagaimana?header
untuk mengatur tajuk jawabanJika itu membantu siapa pun, (bahkan jika ini agak buruk karena kami hanya harus mengizinkan ini untuk tujuan dev) di sini adalah solusi Java karena saya mengalami masalah yang sama. [Sunting] Jangan gunakan wildcard * karena ini adalah solusi yang buruk, gunakan
localhost
jika Anda benar-benar perlu memiliki sesuatu yang berfungsi secara lokal.sumber
Server (tempat permintaan POST dikirim) perlu menyertakan header Tipe-Konten dalam responsnya.
Berikut daftar tajuk khas untuk disertakan, termasuk satu tajuk "X_ACCESS_TOKEN" khusus:
Itulah yang perlu dikonfigurasikan oleh server http Anda untuk server web tempat Anda mengirim permintaan.
Anda mungkin juga ingin meminta orang server Anda untuk mengekspos tajuk "Panjang Konten".
Dia akan mengenali ini sebagai permintaan Cross-Origin Resource Sharing (CORS) dan harus memahami implikasi membuat konfigurasi server tersebut.
Untuk detail lihat:
sumber
Anda dapat mengaktifkan tajuk yang tepat dalam PHP dengan ini:
sumber
Berikut ini berfungsi untuk saya dengan nodejs:
sumber
Header yang Anda coba atur adalah header respons . Mereka harus disediakan, sebagai tanggapan, oleh server yang Anda ajukan permintaan.
Mereka tidak memiliki tempat yang ditetapkan pada klien. Tidak ada gunanya memiliki cara untuk memberikan izin jika mereka dapat diberikan oleh situs yang menginginkan izin alih-alih situs yang memiliki data.
sumber
Jika ada yang mengalami masalah ini dengan server ekspres, tambahkan middleware berikut
sumber
jika Anda menguji beberapa permintaan javascript untuk ionic2 atau angularjs 2, di chrome Anda di pc atau mac, maka pastikan Anda menginstal plugin CORS untuk browser chrome untuk memungkinkan cross origin.
mayba mendapatkan permintaan akan bekerja tanpa perlu itu, tetapi posting dan menempatkan dan menghapus akan meminta Anda untuk menginstal plugin kors untuk pengujian untuk pergi tanpa masalah, yang pasti tidak keren, tetapi saya tidak tahu bagaimana orang melakukannya tanpa plugin CORS.
dan juga pastikan json response tidak mengembalikan 400 oleh beberapa status json
sumber
ini masalah backend. jika menggunakan layar api pada perubahan backend cors.js dan tambahkan diajukan di sini
sumber
Di Asp Net Core , untuk membuatnya berfungsi dengan cepat untuk pengembangan; di
Startup.cs
,Configure method
tambahkansumber
Dalam kasus saya, saya menerima beberapa parameter sebagai @ HeaderParam menjadi metode layanan web.
Parameter ini HARUS dinyatakan dalam filter CORS Anda seperti itu:
sumber
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers
kesalahan berarti bahwaAccess-Control-Allow-Origin
bidang tajuk HTTP tidak ditangani atau diizinkan oleh respons. HapusAccess-Control-Allow-Origin
bidang dari tajuk permintaan.sumber
Jika Anda menggunakan
localhost
dan PHP mengatur ini untuk menyelesaikan masalah:Dari penggunaan front-end Anda:
dan booming tidak ada lagi masalah dari
localhost
!sumber