首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ArcGIS服务器REST API - POST选项印前检查请求:不允许使用405方法

ArcGIS服务器REST API - POST选项印前检查请求:不允许使用405方法
EN

Stack Overflow用户
提问于 2017-02-15 20:20:44
回答 2查看 1.2K关注 0票数 3

我正在构建一个基于ArcGis服务器的GIS应用程序,但我在Firefox浏览器上遇到了一个问题。我正在JS中开发一个GIS应用程序,它允许用户编辑要素图层(注意:在没有ESRI ArcGis API for JS的情况下调用ArcGis )。

在ArcGIS服务器中创建新记录的HTTP POST请求如下:http://server/arcgis/rest/services/layerName/FeatureServer/0/addFeatures

正如文档所述(http://resources.arcgis.com/en/help/rest/apiref/fsadd.html),可以永久更改系统状态的操作(添加、更新、删除)是POST-only操作。否则,将向客户端发送相应的错误消息,错误代码为405 (不允许使用方法)。

在Chrome和IE中,为了运行这个POST请求并避免CORS问题,我使用了一个代理。相反,为了确定实际请求是否可以安全发送,首先“预检”POST请求通过OPTIONS方法将HTTP请求发送到另一个域上的资源。

因此,考虑到Firefox只接受POST请求来添加功能,并且考虑到ArcGIS首先发送一个OPTIONS方法,我在使用Firefox编辑要素层时遇到了问题。实际上,以下请求:

server/arcgis/rest/services/layerName/FeatureServer/0/addFeatures

返回错误码405 (不允许使用方法)。

是否有解决此问题的变通方法或方法?特别是考虑到也许有一天,出于安全原因,其他浏览器可以实现此OPTIONS请求。

EN

回答 2

Stack Overflow用户

发布于 2017-05-08 13:46:35

有4种方法可以解决您的问题,每种方法都取决于您的服务器架构。(第一种方法是配置您的服务器,但另一种方法是使用现在支持.NET、PHP、Java的proxy page )。

  1. (如果可以管理ArcGIS服务器)。

如果您可以将代理页面放在与您的web服务器相同的源位置,请使用

  1. 。(这种方式可以通过使用您的服务器请求另一台服务器来解决此问题,并且不再存在CORS问题。)

中的步骤即可

如果必须将代理页面放在另一个源中,并且可以在托管代理页面的服务器上启用CORS,则使用

中的步骤操作

  1. 如果必须将代理页面放入另一个源,则必须先编辑代理页面以接受和答复印前检查请求。(这种方式将允许您的服务器处理印前检查请求并首先接受它们。)
    • 按照this.
    • After中的步骤完成代理页面设置,然后您需要编辑代理页面代码以接受和回复印前检查请求。请看一下this.

票数 0
EN

Stack Overflow用户

发布于 2020-06-24 08:29:59

我不知道为什么,但这在我们的应用中起作用了。

我们的应用程序是用react编写的,并且依赖于一个独立的后端API。

除非我们定义了REACT_APP_API_hostREACT_APP_API_protocol,否则我们从ESRI底图中获取这些405。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42250533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档