CORS ออก ArcGIS 10.1 IIS (การแชร์ทรัพยากรข้ามแหล่งกำเนิด)


11

ฉันติดตั้ง ArcGIS 10.1 พร้อมเว็บอะแดปเตอร์สำหรับ IIS แล้ว ฉันได้เพิ่มไฟล์ config ไปยังรากของ IIS7 เพื่อเปิดใช้งานข้ามแหล่งกำเนิดทรัพยากรร่วมกัน ( ธ ) ตามนี้หน้า ฉันได้ผลักเซิร์ฟเวอร์ ArcGIS ที่เปิดใช้งาน cors ลงในรายการเซิร์ฟเวอร์เริ่มต้น cors ตามหน้านี้ :

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

อย่างไรก็ตามเมื่อแอปพลิเคชัน JavaScript ของฉันซึ่งโฮสต์บน vmagsten ทำการร้องขอไปยังเซิร์ฟเวอร์ GIS (vmagstenone) ฉันได้รับข้อผิดพลาด

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

แก้ไข: และเลเยอร์คุณลักษณะล้มเหลวในการโหลด ฉันได้ลองโหลดเลเยอร์แบบไดนามิกแล้วและนี่ก็ล้มเหลวด้วยข้อผิดพลาดเดียวกัน _557 (ดูภาพ)

แก้ไข: ฉันไม่ควรเห็นข้อผิดพลาดนี้เนื่องจากขั้นตอนด้านบนควรหมายความว่าเซิร์ฟเวอร์รองรับ cross origin คำสั่งนี้โดย esri ว่าข้อผิดพลาดนี้สามารถละเว้นไม่ได้ใช้ในกรณีนี้เนื่องจากเซิร์ฟเวอร์นี้ควรสนับสนุน cors หมายความว่าไม่สามารถข้ามข้อผิดพลาดแรกไปยังเซิร์ฟเวอร์ ESRI ได้

ป้อนคำอธิบายรูปภาพที่นี่!

แก้ไข: นี่คือตัวอย่างการตอบกลับจากแบบสอบถามในเลเยอร์นี้ซึ่งแสดงว่าการตอบกลับนั้นมีการเข้าถึงการควบคุมการอนุญาตให้กำเนิด

ป้อนคำอธิบายรูปภาพที่นี่!


3
คุณอาจต้องการกำหนด CORS เพื่อให้เป็นที่ชัดเจนว่าเรากำลังพูดถึงการแบ่งปันทรัพยากรข้ามแหล่งกำเนิดไม่ใช่สถานีอ้างอิงอย่างต่อเนื่องซึ่งใช้สำหรับ GPS
Kirk Kuykendall

2
คุณแน่ใจหรือไม่ว่า IIS ของคุณคืนส่วนหัวที่จำเป็นสำหรับ CORS
Devdatta Tengshe

@DevdattaTengshe ฉันได้แก้ไขโพสต์ด้านบน
David Wilton

คำตอบ:


4

คุณพูดถึงว่าคุณได้รับข้อผิดพลาด แต่บริการไม่สามารถโหลดได้จริงหรือ

ฉันถามตามที่ฉันเห็นโพสต์นี้ในฟอรั่ม Esri ซึ่งระบุ:

ข้อผิดพลาดนี้สามารถละเว้นได้อย่างปลอดภัย มีบางกรณีที่ API จะไม่ส่งคำขอไปยัง // rest / info และมีดังนี้: เบราว์เซอร์ไม่รองรับ CORS เซิร์ฟเวอร์แสดงรายการอยู่ใน esri.config.defaults.io.corsEnabledServers esri.config.defaults.io .corsDetection เป็นเท็จ JSON ใช้แทน JSONP ในกรณีต่อไปนี้: ทรัพยากรที่ถูกดึงมาอยู่ในโดเมนเดียวกันกับแอปพลิเคชันทรัพยากรที่ถูกดึงมาอยู่บนเซิร์ฟเวอร์ที่รองรับ CORS

ฉันคิดว่ามันเกิดขึ้นในเบราว์เซอร์คอนโซลอื่นเช่นกัน

ถ้าไม่คุณสามารถโยนบันทึกพู้ทำเล่นหรือไฟล์. HAR แบบออนไลน์ที่ไหนสักแห่ง (หรือส่งอีเมลถึงฉัน) และแก้ไขคำตอบนี้ได้อย่างไม่เหมาะสม


ขอโทษที่ฉันควรจะกล่าวถึงฉันไม่ได้เห็นว่า บริการไม่สามารถโหลดได้ ฉันจะโพสต์ข้อผิดพลาดจาก Firefox ไม่ล้มเหลวใน IE
David Wilton

ฉันคิดว่าคุณอาจถูกต้องว่าข้อผิดพลาดสองข้อแรกควรถูกละเว้นเนื่องจาก ESRI บอกว่าสิ่งเหล่านี้คาดหวัง อย่างไรก็ตามข้อผิดพลาด _557 ที่มาจากเฟรมเวิร์กน่าจะเป็นปัญหา ฉันได้รับข้อผิดพลาดเดียวกันในเวอร์ชัน 3.3 & 3.4
David Wilton

1
ฉันได้ลองใช้เลเยอร์แบบไดนามิกแทนเลเยอร์คุณลักษณะและมีปัญหาเดียวกัน หากไซต์นั้นโฮสต์บนเซิร์ฟเวอร์เดียวกันกับข้อมูลที่ไม่มีข้อผิดพลาด ใช้ chrome.exe - ปิดการใช้งานเว็บการรักษาความปลอดภัย (ไม่บังคับใช้นโยบาย cors) คำขอเป็นเรื่องปกติ นี่คือสิ่งที่ทำให้ฉันเชื่อว่าเป็นปัญหากับคูร์สและคำขอ
David Wilton

2

แม้ว่าการตอบกลับจะมีAccess-Control-Allow-Origin: *ส่วนหัว แต่ก็ยังมีX-Frame-Options: SAMEORIGINและX-XSS-Protection: 1; mode=blockส่วนหัว นี่คือส่วนหัว X-prefix ซึ่งไม่ได้มาตรฐานดังนั้นฉันจึงไม่แน่ใจ 100% ว่าเบราว์เซอร์ของคุณให้เกียรติพวกเขาเหนือส่วนหัวที่อนุญาตหรือไม่

คุณสามารถใช้เครื่องมือเช่นFiddlerเพื่อเพิ่มและลบส่วนหัวจากคำขอของเบราว์เซอร์ นี่อาจช่วยคุณติดตามสิ่งที่เกิดขึ้น


2

นี่คือสิ่งที่ใช้ได้กับฉันใน IIS 8.0 สิ่งนี้อาจแตกต่างจาก IIS เวอร์ชันอื่น

ลบไฟล์customHeadersในไดเรกทอรีรากของเว็บไซต์web.configหรือลบweb.configไฟล์อย่างสมบูรณ์

แล้วสลับไปที่ApplicationHost.configใน Configuration Manager IIS สำหรับarcgisการประยุกต์ใช้และเพิ่มAccess-Control-Allow-Originชื่อและมูลค่าให้กับ*customHeaders

ตัวแก้ไขการกำหนดค่า IIS 8.0

CustomHeaders


1

ฉันไม่คุ้นเคยกับการแบ่งปันทรัพยากรข้ามแหล่งข้อมูล
ฉันใช้นโยบายข้ามโดเมน
นโยบายข้ามโดเมน
คุณมีการกำหนดค่าเช่นกันหรือไม่?


1
ใช่ฉันมีทั้งไฟล์ crossdomain.xml clientaccesspolicy.xml ตามที่กำหนดค่าโดยการติดตั้งเซิร์ฟเวอร์ ArcGIS อย่างไรก็ตามฉันเข้าใจว่าไฟล์เหล่านี้เกี่ยวข้องกับแอปพลิเคชั่น Flex และ Silverlight (ลิงก์) ฉันจะแก้ไขคำถามเพื่อให้ชัดเจนว่าฉันกำลังพูดถึง JS only resources.arcgis.com/en/help/install-guides/arcgis-server/10.1/…
David Wilton

1

สิ่งที่ทำงานที่สุดสำหรับฉันคือการเพิ่มต่อไปนี้ไปROOTเว็บไซต์และไม่ โปรแกรมประยุกต์สำหรับอะแดปเตอร์เว็บ มันสมเหตุสมผลหรือไม่ ไม่ให้ฉัน แต่มันก็ได้ผลสำหรับฉัน

แก้ไข: สิ่งนี้ควรไปในไฟล์พร็อกซี DotNet ชื่อ 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>

ป้อนคำอธิบายรูปภาพที่นี่


นี่คือคำตอบที่เหมาะกับฉัน ... ฉันกำลังแก้ไขคำตอบของคุณเพื่อชี้แจงสิ่งที่ต้องปรับปรุง
randomblink
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.