CORS发出ArcGIS 10.1 IIS(跨源资源共享)


11

我已经为IIS的Web适配器安装了ArcGIS 10.1。我已按照页面将配置文件添加到IIS7的根目录,以启用跨源资源共享(CORS)。我已按照页面将启用了cors功能的ArcGIS Server推入默认cors服务器列表中:

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

但是,当我在vmagsten上托管的JavaScript应用程序向GIS服务器(vmagstenone)发出请求时,出现错误

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

编辑:要素图层无法加载。我也曾尝试加载动态图层,但同样失败,错误为_557(参见图片)

编辑:我不应该看到此错误,因为上述步骤应表示服务器确实支持跨源。该声明由ESRI这个错误可以忽略不适用于这种情况,因为该服务器应该支持CORS。这确实意味着可以忽略ESRI服务器的第一个错误。

在此处输入图片说明

编辑:这是该层查询的示例响应,显示响应具有Access-Control-Allow-Origin

在此处输入图片说明


3
您可能需要定义CORS,因此很明显,我们正在谈论的是跨源资源共享,而不是用于GPS 的持续运行参考站
Kirk Kuykendall

2
您是否已确定IIS返回了所需的CORS标头?
Devdatta Tengshe

@DevdattaTengshe我已经编辑了上面的帖子
David Wilton

Answers:


4

您提到收到错误,但是服务实际上加载失败吗?

当我在Esri论坛上发现此帖子时,我问:

可以安全地忽略此错误。在某些情况下,API不会向// rest / info发送请求,如下所示:浏览器不支持CORS服务器已在esri.config.defaults.io.corsEnabledServers esri.config.defaults.io中列出.corsDetection为false在以下情况下,使用JSON代替JSONP:正在获取的资源与应用程序位于同一域中正在获取的资源位于支持CORS的服务器上

我以为它也会在其他浏览器控制台中发生?

如果没有,您能否将Fiddler日志或.HAR文件在线放置在某个地方(或通过电子邮件将其发送给我),然后不适当地编辑此答案。


对不起,我应该提到我确实看到了。该服务确实无法加载。我将从Firefox发布错误。它不会在IE中失败
David Wilton 2013年

我认为您可能是对的,应该忽略前两个错误,因为ESRI认为这些是预期的。但是,来自框架的错误_557似乎是问题所在。我在版本3.3和3.4中遇到相同的错误
David Wilton 2013年

1
我也尝试过使用动态层而不是要素层,并且存在相同的问题。如果该站点与数据托管在同一服务器上,则没有错误。使用chrome.exe --disable-web-security(不强制执行cors策略),请求就可以了。这就是让我相信这是一个麻烦和要求的问题。
大卫·威尔顿

2

尽管响应确实包含一个Access-Control-Allow-Origin: *标头,但它也包含X-Frame-Options: SAMEORIGINX-XSS-Protection: 1; mode=block标头。这些是非标准的 X前缀标头,因此我不确定100%是否允许您的浏览器使用allow标头。

您可以使用Fiddler之类的工具从浏览器请求中添加和删除标头;这可以帮助您跟踪正在发生的事情。


2

这是在IIS 8.0中对我有用的。在其他版本的IIS上这可能有所不同。

删除customHeaders网站根目录中的web.config文件或web.config完全删除该文件。

然后切换到ApplicationHost.configIIS配置管理器中的arcgis应用程序,然后将Access-Control-Allow-Origin名称和*值添加到中customHeaders

IIS 8.0配置编辑器

CustomHeaders



1

最终对我有用的是将以下内容添加到ROOT站点,而不是 Web适配器的应用程序。是否有意义?不对我 但这对我有用。

编辑:这应该放在名为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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.