CORS 발행 ArcGIS 10.1 IIS (Cross Origin Resource Sharing)


11

IIS 용 웹 어댑터와 함께 ArcGIS 10.1을 설치했습니다. 페이지에 따라 CORS (Cross Origin Resource Sharing)를 활성화하기 위해 IIS7의 루트에 구성 파일을 추가했습니다 . 페이지에 따라 cors 사용 ArcGIS 서버를 기본 cors 서버 목록으로 푸시했습니다 .

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

그러나 vmagsten에서 호스팅되는 JavaScript 응용 프로그램이 GIS 서버 (vmagstenone)에 요청하면 오류가 발생합니다.

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

편집 : 기능 레이어가로드되지 않습니다. 또한 동적 레이어를로드하려고 시도했지만 동일한 오류 _557 (이미지 참조)과 함께 실패합니다.

편집 : 위의 단계는 서버가 교차 원점을 지원한다는 것을 의미 하므로이 오류가 표시되지 않아야합니다. 이 이 서버가 CORS를 지원해야하기 때문에이 오류가 무시 될 수 ESRI에 의해이 경우에는 적용되지 않습니다. 이는 ESRI 서버에 대한 첫 번째 오류를 무시할 수 있음을 의미합니다.

여기에 이미지 설명을 입력하십시오!

편집 : 여기 응답에 Access-Control-Allow-Origin이 있음을 보여주는이 계층의 쿼리 응답 샘플이 있습니다.

여기에 이미지 설명을 입력하십시오!


3
CORS를 정의 하여 GPS에 사용되는 Continuous Operating Operating Station이 아니라 Cross Origin Resource Sharing 에 대해 이야기하고 있음을 분명히 알 수 있습니다 .
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이 false 인 경우 다음과 같은 경우 JSONP 대신 JSON이 사용됩니다. 페치되는 자원이 애플리케이션과 동일한 도메인에 있습니다. 페치되는 자원이 CORS를 지원하는 서버에 있습니다.

다른 브라우저 콘솔에서도 발생한다고 가정합니까?

그렇지 않은 경우 Fiddler 로그 또는 .HAR 파일을 온라인 어딘가에 보내거나 전자 메일로 보내어 적절하게이 답변을 편집 할 수 있습니까?


내가 봤다는 말을해서 미안해 서비스가로드되지 않습니다. Firefox에서 오류를 게시합니다. IE에서는 실패하지 않습니다
David Wilton

ESRI가 예상 한대로 처음 두 가지 오류를 무시해야한다고 생각합니다. 그러나 프레임 워크에서 발생하는 오류 _557이 문제인 것 같습니다. 버전 3.3 및 3.4에서 동일한 오류가 발생 함
David Wilton

1
피처 레이어가 아닌 동적 레이어를 사용해 보았는데 동일한 문제가 있습니다. 사이트가 데이터와 동일한 서버에서 호스팅되는 경우 오류가 없습니다. chrome.exe --disable-web-security (cors 정책을 시행하지 마십시오)를 사용하면 요청이 정상입니다. 이것이 쿠어스와 요청의 문제라고 믿게 만드는 것입니다.
David Wilton

2

응답이 포함 않지만 Access-Control-Allow-Origin: *헤더를 또한 포함 X-Frame-Options: SAMEORIGIN하고 X-XSS-Protection: 1; mode=block헤더. 이들은 X-prefix 헤더이며 비표준 이므로 브라우저가 허용 헤더보다 헤더를 준수 하는지 확실하지 않습니다.

Fiddler 와 같은 도구를 사용하여 브라우저 요청에서 헤더를 추가하고 제거 할 수 있습니다 . 이것은 당신이 일어나는 것을 추적하는 데 도움이 될 수 있습니다.


2

IIS 8.0에서 나에게 도움이 된 것은 다음과 같습니다. 다른 버전의 IIS에서는 다를 수 있습니다.

중 하나를 제거 customHeaders웹 사이트의 루트 디렉토리의에서 web.config파일 또는 삭제 web.config완전히 파일을.

그런 다음 응용 프로그램 ApplicationHost.config의 IIS 구성 관리자에서로 전환 arcgis하고에 Access-Control-Allow-Origin이름과 *값을 추가 하십시오 customHeaders.

IIS 8.0 구성 편집기

CustomHeaders



1

마지막으로 나를 위해 일한 것은 웹 어댑터의 응용 프로그램이 아닌 ROOT 사이트에 다음을 추가하는 것입니다 . 말이 되나요? 나 한테는 아니야 그러나 그것은 나를 위해 일했습니다.

편집 : 이것은 Web.config라는 DotNet 프록시 파일에 있어야합니다.

<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.