CORS dengan POSTMAN

95

Subjek ini telah ditanyakan beberapa kali, tetapi saya masih tidak memahami sesuatu:

Ketika saya membaca jawaban tentang

Tidak ada header 'Access-Control-Allow-Origin'

masalah, ia mengatakan pengaturan harus ditetapkan pada server yang diminta untuk memungkinkan lintas domain: add_header 'Access-Control-Allow-Origin' '*';.

Tapi, tolong beri tahu saya mengapa ketika bertanya dari tukang pos (yang merupakan klien), Ini berfungsi seperti pesona dan saya mendapat tanggapan dari server yang diminta?

Terima kasih

IsraGab
sumber
25
Tukang pos tidak peduli dengan SOP, ini adalah alat pengembang, bukan browser.
Musa
2
@Musa Ok, jadi jika ini adalah masalah browser (klien), mengapa saya harus mengubah sesuatu di server?
IsraGab
8
Ini adalah server yang memberi tahu browser bahwa tidak masalah ( CORS ) atau tidak bagi situs tertentu untuk mengakses kontennya dan browser menghormatinya
Musa
Saya memiliki pertanyaan yang persis sama. Bagaimana seseorang dapat melakukannya secara programatik, dalam hal ini tentang elektron.
mluis
10
Pertanyaan sebenarnya di sini adalah bagaimana mengkonfigurasi POSTMAN untuk meniru perilaku browser di mana permintaan ORIGIN dikirim terlebih dahulu. Intinya bagaimana Anda membuat POSTMAN berperilaku seperti browser karena kami perlu menguji untuk memastikan API kami dikonfigurasi dengan benar. Jadi bagaimana jika API bekerja dari POSTMAN dan rusak karena CORS dari browser. Artinya API tidak berguna.
Chris Love

Jawaban:

51

Seperti yang dikomentari oleh @Musa, sepertinya alasannya adalah:

Tukang pos tidak peduli dengan SOP, ini adalah alat pengembang, bukan browser

Omong-omong, inilah ekstensi chrome untuk membuatnya berfungsi di browser Anda (ini untuk chrome, tetapi Anda dapat menemukannya untuk FF atau Safari).

Lihat di sini jika Anda ingin mempelajari lebih lanjut tentang Cross-Origin dan mengapa ini berfungsi untuk ekstensi.

IsraGab
sumber
6
Lalu bagaimana cara melindungi rute API saya yang diakses dari alat seperti Postman? Misalnya, API yang membutuhkan verifikasi captcha. Tetapi jika langsung diakses dari Postman, verifikasi captcha dilewati
Sadman Muhib Samyo
5
Tautan ke ekstensi rusak.
jayarjo
Pertanyaan yang sama, selain itu, bagaimana ekstensi membuat melanggar kebijakan asal tunggal?
Iván Cortés Romero
tautan ke ekstensi-chrome rusak
OhadR
46

Jika Anda menggunakan situs web dan Anda mengisi formulir untuk mengirimkan informasi (nomor jaminan sosial Anda misalnya), Anda ingin memastikan bahwa informasi tersebut dikirim ke situs yang menurut Anda merupakan tujuan pengirimannya. Jadi browser dibuat untuk mengatakan, secara default, 'Jangan mengirim informasi ke domain selain domain yang sedang dikunjungi).

Akhirnya itu menjadi terlalu membatasi tetapi ide default masih tetap ada di browser. Jangan biarkan halaman web mengirimkan informasi ke domain yang berbeda. Tapi ini semua pengecekan browser. Chrome dan firefox, dll memiliki kode bawaan yang mengatakan 'sebelum mengirim permintaan ini, kami akan memeriksa apakah tujuannya cocok dengan halaman yang dikunjungi'.

Postman (atau CURL pada baris cmd) tidak memiliki pemeriksaan bawaan. Anda berinteraksi secara manual dengan sebuah situs sehingga Anda memiliki kendali penuh atas apa yang Anda kirim.

pengguna3724317
sumber
2
Lebih tepatnya tukang pos tidak mengirim Permintaan XmlHttp yang akan diperiksa tetapi panggilan jaringan tingkat atas (seperti Anda membuka URL di tab browser baru) sehingga tidak ditendang bahkan ketika dalam ekstensi
tgkprog
1
Browser tidak memeriksa bahwa situs Anda tidak mengirimkan data ke domain lain: jika situs domain lain mengizinkan semua asal, browser Anda 100% setuju dengan itu. Sebaliknya, ini melindungi domain lain, seandainya situs Anda akan menggunakan sumber dayanya tanpa izin.
XouDo
40

CORS(Cross-Origin Resource Sharing) dan SOP(Same-Origin Policy) adalah konfigurasi sisi server yang diputuskan klien untuk diberlakukan atau tidak .

Terkait dengan klien

  • Kebanyakan Browser menerapkannya untuk mencegah masalah yang terkait dengan CSRFserangan.
  • Sebagian besar alat Pengembangan tidak memedulikannya .
Felipe Roos
sumber
14

Meskipun semua jawaban di sini adalah penjelasan yang sangat bagus tentang apa itu cors tetapi jawaban langsung untuk pertanyaan Anda adalah karena perbedaan berikut tukang pos dan browser.

Browser: Mengirim OPTIONSpanggilan untuk memeriksa jenis server dan mendapatkan header sebelum mengirim permintaan baru apa pun ke titik akhir API. Di mana ia memeriksa Access-Control-Allow-Origin. Dengan mempertimbangkan ini, Access-Control-Allow-Origintajuk akun hanya menentukan mana semua ASAL LINTAS diizinkan, meskipun secara default browser hanya akan mengizinkan asal yang sama.

Postman: Mengirim langsung GET, POST, PUT, DELETEdll permintaan tanpa memeriksa apa jenis server dan mendapatkan header Access-Control-Allow-Origindengan menggunakan OPTIONSpanggilan ke server.

Rishabh Batra
sumber
"Mengirim panggilan OPTIONS untuk memeriksa jenis server dan mendapatkan header sebelum mengirim permintaan baru apa pun ke titik akhir API" - Itu tidak benar. Itu hanya melakukan itu untuk permintaan yang tidak sederhana.
Quentin
2

Umumnya, Postman digunakan untuk debugging dan digunakan dalam tahap pengembangan. Tetapi jika Anda ingin memblokirnya bahkan dari tukang pos, coba ini.

    const referrer_domain = "[enter-the-domain-name-of-the-referrer]"
    //check for the referrer domain
    app.all('/*', function(req, res, next) {
      if(req.headers.referer.indexOf(referrer_domain) == -1){
        res.send('Invalid Request')
      }

      next();
    });
Bharath Pabba
sumber
tambahkan kode di file Anda dengan router. Jika Anda memiliki file dengan "router", tambahkan kode di bagian atas file. File yang sama di mana Anda memiliki: const express = require ('express') const app = express (); const cors = membutuhkan ('cors');
samceena
edit app.jsjika Anda menggunakan node app.jsuntuk menjalankan server.
Bharath Pabba
dapatkah itu melindungi server Anda dari ddos?
SuperUberDuper
-1

Gunakan plugin browser / chrome postman untuk memeriksa CORS / SOP seperti situs web. Gunakan aplikasi desktop sebagai gantinya untuk menghindari kontrol ini.

Guillermo Ellison
sumber