Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 21428|Jawab: 1

[WebAPI] Masalah dan solusi untuk panggilan lintas domain AJAX ke layanan MVC atau WebAPI ASP.NET

[Salin tautan]
Diposting pada 01/12/2015 15.20.20 | | | |
Deskripsi masalah
Ketika panggilan lintas domain ASP.NET MVC atau layanan yang ditulis ASP.NET Web API, itu menjadi tidak dapat diakses.
Metode reproduksi
  • Gunakan templat untuk membuat proyek ASP.NET Web API paling sederhana, debug untuk memastikannya berfungsi
  • Buat proyek lain hanya dengan satu halaman HTML dan lakukan panggilan AJAX
  • Buka halaman ini di browser Anda dan Anda akan menemukan kesalahan berikut (405: Metode Tidak Diizinkan)

    Catatan: Situasi yang sama terjadi di ASP.NET MVC. Dalam beberapa kasus, MVC juga dapat digunakan langsung untuk mengembangkan layanan, yang memiliki kelebihan dan kekurangan tersendiri dibandingkan dengan WebAPI. Di bawah ini adalah contoh layanan yang dikembangkan menggunakan MVC


Analisis penyebab
Alasan mendasar untuk masalah lintas domain adalah bahwa browser memiliki hak istimewa yang rendah pada kedua permintaan dan biasanya hanya mengizinkan panggilan ke sumber daya di domain lokal, kecuali server target secara eksplisit memberitahunya bahwa panggilan lintas domain diizinkan.
Oleh karena itu, meskipun masalah lintas domain disebabkan oleh perilaku browser, solusinya ada di sisi server. Karena tidak mungkin untuk mewajibkan semua klien untuk mengurangi keamanan.

larutan
Untuk jenis proyek MVC ASP.NET dan ASP.NET Web API, saya melakukan beberapa penelitian dan menentukan bahwa skenario berikut layak.
Untuk ASP.NET MVC, Anda hanya perlu menambahkan konten berikut ke web.config


Untuk ASP.NET Web API, selain pengaturan di atas, desain khusus perlu ditambahkan, yaitu menambahkan metode OPTIONS untuk setiap API Controller, tetapi tanpa mengembalikan apa pun.
string publik Options()
{
mengembalikan null; Respons HTTP 200 dengan isi kosong
}

Catatan: Fungsi ini juga dapat dilakukan dengan beberapa penelitian, dan mungkin lebih baik untuk mendesainnya sebagai filter.





Mantan:Kutipan notebook saluran resmi Lenovo pada 1 Desember
Depan:Menerapkan layanan Http sederhana dengan HttpListener
 Tuan tanah| Diposting pada 01/12/2015 15.39.52 |
  1. <system.webServer>

  2. <httpProtocol>

  3. <customHeaders>

  4. <add name="Access-Control-Allow-Origin" value="*" />

  5. <add name="Access-Control-Allow-Headers" value="Content-Type" />

  6. <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />

  7. </customHeaders>

  8. </httpProtocol>

  9. <handlers>

  10. <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

  11. <remove name="OPTIONSVerbHandler" />

  12. <remove name="TRACEVerbHandler" />

  13. <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

  14. </handlers>

  15. </system.webServer>
Salin kode


Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com