Выпуск CORS ArcGIS 10.1 IIS (перекрестное совместное использование ресурсов)


11

У меня установлена ​​ArcGIS 10.1 с веб-адаптером для IIS. Я добавил файл конфигурации в корень IIS7, чтобы включить Cross Origin Resource Sharing (CORS) согласно этой странице. Я поместил сервер ArcGIS с поддержкой cors в список серверов cors по умолчанию на этой странице:

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

Однако, когда мое приложение JavaScript, размещенное на vmagsten, отправляет запрос на ГИС-сервер (vmagstenone), я получаю сообщение об ошибке

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

Изменить: И векторный слой не загружается. Я также попытался загрузить динамический слой, и это тоже не удается с той же ошибкой _557 (см. Изображение)

Изменить: я не должен видеть эту ошибку, так как вышеуказанные шаги должны означать, что сервер поддерживает перекрестное происхождение. Это заявление esri о том, что эту ошибку можно игнорировать, в этом случае не применимо, поскольку этот сервер должен поддерживать cors. Это означает, что первую ошибку на сервере ESRI можно игнорировать.

введите описание изображения здесь!

Изменить: вот пример ответа на запрос на этом слое, показывающий, что ответ имеет Access-Control-Allow-Origin

введите описание изображения здесь!


3
Возможно, вы захотите определить CORS, чтобы было ясно, что мы говорим о перекрестном совместном использовании ресурсов, а не о постоянно действующей эталонной станции , которая используется для GPS.
Кирк Куйкендалл

2
Вы убедились, что ваш IIS возвращает требуемые заголовки для CORS?
Девдатта Тенгше

@DevdattaTengshe Я редактировал пост выше
Дэвид Уилтон

Ответы:


4

Вы упоминаете, что получили ошибку, но действительно ли служба не загружается?

Я спрашиваю, как я заметил этот пост на форумах Esri, в котором говорится:

Эту ошибку можно смело игнорировать. Существуют случаи, когда API не отправляет запрос // rest / info и выглядит следующим образом: Браузер не поддерживает CORS. Сервер уже указан в esri.config.defaults.io.corsEnabledServers esri.config.defaults.io. .corsDetection равно false JSON используется вместо JSONP в следующих случаях: извлекаемый ресурс находится в том же домене, что и приложение. извлекаемый ресурс находится на сервере, который поддерживает CORS.

Я предполагаю, что это происходит и в других браузерных консолях?

Если нет, вы можете выложить где-нибудь журнал Fiddler или файл .HAR онлайн (или написать мне по электронной почте) и соответственно отредактировать этот ответ.


Извините, я должен был упомянуть, что видел это. Служба не загружается. Я опубликую ошибку от Firefox. Это не терпит неудачу в IE
Дэвид Уилтон

Я думаю, что вы, вероятно, правы, что первые две ошибки следует игнорировать, так как ESRI говорит, что они ожидаемы. Однако ошибка _557, исходящая из фреймворка, кажется, является проблемой. Я получаю ту же ошибку в версии 3.3 и 3.4
Дэвид Уилтон

1
Я также попытался использовать динамический слой, а не векторный слой, и это та же проблема. Если сайт размещен на том же сервере, что и данные, ошибок нет. С помощью chrome.exe --disable-web-security (не применять политику cors) запросы в порядке. Это то, что заставляет меня поверить, что это проблема с курами и просьбой.
Дэвид Уилтон

2

Хотя ответ содержит Access-Control-Allow-Origin: *заголовок, он также содержит X-Frame-Options: SAMEORIGINи X-XSS-Protection: 1; mode=blockзаголовки. Это нестандартные заголовки X-префиксов , поэтому я не уверен на 100%, поддерживает ли ваш браузер их над заголовком allow.

Вы можете использовать такой инструмент, как 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

Я не знаком с разделением ресурсов между источниками.
Я использую междоменную политику.
междоменная политика
У вас это тоже настроено?


1
Да, у меня есть оба файла crossdomain.xml clientaccesspolicy.xml, настроенные при установке сервера ArcGIS. Однако, насколько я понимаю, эти файлы относятся к приложениям Flex и Silverlight (ссылка). Я отредактирую вопрос, чтобы было ясно, что я говорю только о JS resources.arcgis.com/en/help/install-guides/arcgis-server/10.1/…
Дэвид Уилтон,

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.