Masalah CORS ArcGIS 10.1 IIS (Cross Origin Resource Sharing)

11

Saya memiliki ArcGIS 10.1 diinstal dengan adaptor web untuk IIS. Saya telah menambahkan file konfigurasi ke root IIS7 untuk mengaktifkan Cross Origin Resource Sharing (CORS) sesuai halaman ini . Saya telah mendorong cors yang mengaktifkan server ArcGIS ke daftar server cors default sesuai halaman ini :

esri.config.defaults.io.corsEnabledServers.push("vmagstenone")). 

Namun, ketika aplikasi JavaScript saya yang di-host di vmagsten membuat permintaan ke server GIS (vmagstenone) saya mendapatkan kesalahan

"Origin http://vmagsten is not allowed by Access-Control-Allow-Origin.". 

Sunting: Dan lapisan fitur gagal dimuat. Saya juga mencoba memuat lapisan dinamis dan ini juga gagal dengan kesalahan yang sama _557 (lihat gambar)

Sunting: Saya seharusnya tidak melihat kesalahan ini karena langkah-langkah di atas harus berarti bahwa server tidak mendukung asal silang. Pernyataan ini oleh esri bahwa kesalahan ini dapat diabaikan tidak berlaku dalam kasus ini karena server ini harus mendukung kor. Itu berarti bahwa kesalahan pertama ke server ESRI dapat diabaikan.

masukkan deskripsi gambar di sini!

Sunting: di sini adalah contoh respons dari kueri pada lapisan ini yang menunjukkan bahwa respons tersebut memiliki Access-Control-Allow-Origin

masukkan deskripsi gambar di sini!

David Wilton
sumber
3
Anda mungkin ingin mendefinisikan CORS, sehingga jelas kita berbicara tentang Cross Origin Resource Sharing dan bukan Stasiun Referensi yang Terus Berlangsung , yang digunakan untuk GPS.
Kirk Kuykendall
2
Sudahkah Anda memastikan bahwa IIS Anda mengembalikan Header yang diperlukan untuk CORS?
Devdatta Tengshe
@DevdattaTengshe Saya sudah mengedit posting di atas
David Wilton

Jawaban:

4

Anda menyebutkan bahwa Anda mendapatkan kesalahan, tetapi apakah layanan sebenarnya gagal dimuat?

Saya bertanya, ketika saya melihat posting ini di forum Esri yang menyatakan:

Kesalahan ini dapat diabaikan dengan aman. Ada beberapa kasus di mana API tidak akan mengirim permintaan ke // rest / info dan sebagai berikut: Browser tidak mendukung CORS Server sudah terdaftar di esri.config.defaults.io.corsEnabledServers esri.config.defaults.io .corsDetection is false JSON digunakan sebagai ganti JSONP dalam kasus berikut: Sumber daya yang diambil berada di domain yang sama dengan aplikasi Sumber daya yang diambil berada di server yang mendukung CORS

Apakah saya berasumsi itu terjadi di konsol peramban lain juga?

Jika tidak, dapatkah Anda melempar log Fiddler atau file .HAR secara daring ke suatu tempat (atau mengirim email kepada saya), dan mengedit jawaban ini dengan benar.

Simon
sumber
Maaf saya seharusnya mengatakan saya melihat itu. Layanan gagal memuat. Saya akan memposting kesalahan dari Firefox. Tidak gagal di IE
David Wilton
Saya pikir Anda mungkin benar bahwa dua kesalahan pertama harus diabaikan karena ESRI mengatakan ini diharapkan. Namun, kesalahan _557 yang berasal dari kerangka kerja tampaknya menjadi masalah. Saya mendapatkan kesalahan yang sama dalam versi 3.3 & 3.4
David Wilton
1
Saya juga mencoba menggunakan lapisan dinamis daripada lapisan fitur dan yang memiliki masalah yang sama. Jika situs di-host di server yang sama dengan data tidak ada kesalahan. Menggunakan chrome.exe --disable-web-security (jangan menegakkan kebijakan kors) permintaan baik-baik saja. Inilah yang membuat saya percaya itu adalah masalah dengan coors dan permintaan.
David Wilton
2

Sementara respons memang berisi Access-Control-Allow-Origin: *tajuk, tajuk juga berisi X-Frame-Options: SAMEORIGINdan X-XSS-Protection: 1; mode=blocktajuk. Ini adalah tajuk awalan-X, yang tidak standar , jadi saya tidak 100% yakin jika peramban Anda menghormatinya melalui tajuk yang diizinkan.

Anda dapat menggunakan alat seperti Fiddler untuk menambah dan menghapus header dari permintaan browser; ini mungkin membantu Anda melacak apa yang terjadi.

mwalker
sumber
2

Inilah yang bekerja untuk saya di IIS 8.0. Ini mungkin berbeda pada versi IIS lainnya.

Hapus customHeadersdalam web.configfile direktori root situs web atau hapus web.configfile sepenuhnya.

Kemudian beralih ke ApplicationHost.configManajer Konfigurasi IIS untuk arcgisaplikasi dan tambahkan Access-Control-Allow-Originnama dan *nilai ke customHeaders.

Editor Konfigurasi IIS 8.0

Pemimpin kustom

nickpeihl
sumber
1

Saya tidak akrab dengan berbagi sumber daya lintas-asal.
Saya menggunakan kebijakan lintas domain.
kebijakan lintas domain
Apakah Anda sudah mengonfigurasinya juga?

Brad Nesom
sumber
1
Ya saya memiliki kedua file crossdomain.xml clientaccesspolicy.xml yang dikonfigurasi oleh instalasi server ArcGIS. Namun, menurut pemahaman saya bahwa file-file ini berhubungan dengan aplikasi Flex dan silverlight (tautan). Saya akan mengedit pertanyaan untuk memperjelas bahwa saya berbicara tentang JS only resources.arcgis.com/en/help/install-guides/arcgis-server/10.1/…
David Wilton
1

Apa yang akhirnya berhasil bagi saya adalah menambahkan yang berikut ke situs ROOT dan BUKAN aplikasi untuk adaptor web . Apakah masuk akal? Bukan untuk ku. Tetapi itu berhasil bagi saya.

EDIT: Ini harus masuk dalam file proksi DotNet yang disebut Web.config.

<configuration>
  <...rest of file...>
    <system.webServer>
      <httpProtocol>
       <customHeaders>
         <add name="Access-Control-Allow-Origin" value="*" />
       </customHeaders>
      </httpProtocol>
    </system.webServer>
  </...rest of file...>
</configuration>

masukkan deskripsi gambar di sini

CaptDragon
sumber
INI adalah jawaban yang berfungsi untuk saya ... Saya mengedit jawaban Anda untuk mengklarifikasi apa yang perlu disesuaikan.
randomblink