Drupal 8 memiliki layanan web RESTful di dalam inti dan sejak 8.2 kami tidak memerlukan modul cors .
Sekarang untuk menggunakan layanan kami hanya mengaktifkan dan mengkonfigurasi file default.service.yml seperti yang ditentukan di sini
Namun, saya tidak dapat mengkonfigurasi pengaturan ini untuk memungkinkan akses layanan web melalui domain lain.
Pengaturan service.yml saya saat ini untuk cors adalah:
cors.config:
enabled: true
# Specify allowed headers, like 'x-allowed-header'.
allowedHeaders: ['x-csrf-token,authorization,content-type,accept,origin,x-requested-with']
# Specify allowed request methods, specify ['*'] to allow all possible ones.
allowedMethods: ['POST, GET, OPTIONS, DELETE, PUT']
# Configure requests allowed from specific origins.
allowedOrigins: ['*']
# Sets the Access-Control-Expose-Headers header.
exposedHeaders: false
# Sets the Access-Control-Max-Age header.
maxAge: 1000
# Sets the Access-Control-Allow-Credentials header.
supportsCredentials: false
Saya googled untuk mencari konfigurasi terperinci lebih lanjut tentang ini tetapi tidak dapat menemukannya.
Saya membuat ini untuk pengembangan pengujian di dua domain yang berbeda.
Menggunakan lingkungan dev pantheon untuk layanan web dan domain .dev kustom hosting untuk menggunakan layanan tersebut.
Akses layanan berfungsi dengan baik menggunakan ekstensi chrome CORS.
sumber
Jawaban:
Saya mengalami ini baru-baru ini di Pantheon, dan mudah-mudahan ini membantu jika Anda belum menyelesaikannya.
Beberapa hal yang perlu diperhatikan ...
Mengenai lokasi file di Pantheon, pastikan file service.yml Anda ada di / sites / default vs just / sites. Saya keliru di bawah kesan itu akan berhasil dari kedua tempat. Ini hanya akan berfungsi jika di direktori / sites / default.
Perhatikan daftar yang dipisahkan koma dariHeadHeaders masing-masing dalam set kutipan mereka sendiri. Saya awalnya memiliki string tunggal seperti yang Anda lakukan dalam contoh Anda di atas, dan gagal berkali-kali sebelum saya menangkap perbedaan yang halus. Saya cukup yakin metode diizinkan bekerja dengan cara yang sama jika Anda secara khusus ingin mencantumkan metode Anda.
Harap perhatikan juga bahwa sementara cuplikan kode saya akan bekerja dengan baik untuk pengembangan terhadap kotak pasir Pantheon, Anda mungkin ingin mengunci lebih banyak hal sebelum mulai berproduksi. Dengan Pantheon menawarkan HTTPS Anda juga ingin memastikan untuk menggunakannya jika Anda akan menyampaikan informasi melalui header. Semoga ini bisa membantu Anda jika Anda masih memiliki masalah atau orang lain yang tersandung di jalan.
sumber
Temukan: ... / sites / default / default.services.yml
Buat salinan dan ganti nama salinan itu menjadi:
... / situs / default / services.yml
Temukan bagian kode ini: cors.config: enabled: false
dan ganti dengan yang berikut - cors.config: enabled: true
Bersihkan cache.
sumber
Pengaturan berikut ini berfungsi untuk saya.
sumber
exposedHeaders: true tidak valid dan akan menyebabkan Peringatan: implode (): Argumen yang tidak valid disahkan dalam Asm89 \ Stack \ CorsService-> addActualRequestHeaders () (baris 94 dari / vendor / asm89 / stack-cors / src / Asm89 / Stack / CorsService. php) # 0 /web/core/includes/bootstrap.inc(584) Perlu salah atau array dengan header yang diizinkan untuk mengekspos lihat https://developer.mozilla.org/en-US/docs/Web/ HTTP / Header / Access-Control-Expose-Header
sumber