esri.config.defaults.io.proxyUrl 설정

3563 단어 arcgis
1. 앞말:
IE8에서 원형이나 타원형으로 버퍼 조회를 할 때 다음과 같은 오류가 발생합니다:esri.config.defaults.io.proxyUrl이 설정되지 않았습니다.CORS를 사용하는 서버에 요청하면 도메인을 esri로 전송합니다.config.defaults.io.corsEnabledServers.그러나 우리가 수동으로 간단한 다각형을 입력 매개 변수로 그리면 상술한 오류가 발생하지 않을 것이다.
2. 이유:
보통 상자를 사용할 때query를 사용합니다.geometry, 우리는 일반적으로 Extent 변수를 부여하지만, 예를 들어 원이나 많은 불규칙한 다각형의 Polygon을 사용하여 조회해야 할 때esri가 나타난다.config.defaults.io.proxyUrl이 설정되지 않았습니다.다각형 (point가 많기 때문에) 웹 서비스의 URL의 매개 변수 개수는 2048개보다 크고, get 방식 (최대 문자 수는 2048) 은post 방식이 아닙니다.그래서 프록시 페이지를 프록시로 해야 합니다. 프록시를post 방식으로 검색하면 문자 총수의 제한을 받지 않습니다.
3,post와 get 요청의 차이
HTTP 규범에 따라 GET는 정보 획득에 사용되고 안전과 멱 등이 있어야 한다. POST는 서버의 자원을 수정할 수 있는 요청을 표시한다.
(1) Get 방식: 우선'GET 방식으로 제출할 수 있는 데이터는 최대 1024바이트밖에 없다'. GET가 URL을 통해 데이터를 제출하기 때문에 GET가 제출할 수 있는 데이터의 양은 URL의 길이와 직접적인 관계가 있다.실제로 URL에는 매개변수 상한선이 없으며 HTTP 프로토콜 사양에서는 URL 길이를 제한하지 않습니다.이 제한은 특정한 브라우저와 서버가 그것에 대한 제한이다.IE의 URL 길이는 2083바이트(2K+35)로 제한됩니다.다른 브라우저, 예를 들어 Netscape, FireFox 등은 이론적으로 길이 제한이 없고 그 제한은 운영체제의 지원에 달려 있다.이것은 전체 URL 길이를 제한하는 것이지, 당신의 수치 데이터 길이만 제한하는 것이 아닙니다.
(2) Post 방식: 이론적으로 POST는 크기 제한이 없고 HTTP 프로토콜 규범도 크기 제한이 없다. "POST 데이터 양에 80K/100K의 크기 제한이 존재한다"는 것은 정확하지 않다. POST 데이터는 제한이 없고 제한 작용을 하는 것은 서버의 처리 과정의 처리 능력이다.
(3) 프록시 페이지: 일반적으로 한 서버와 한 응용 시스템 사이에 배치된다. 프록시를 사용하면 한 응용 시스템이 당신의 행동이 안전하다는 것을 인정하고 인증을 피하며 안전 검증 서비스를 정상적으로 방문할 수 있다.프록시를 실현하는 방식 중 하나는 영패(Token)이다. 영패 자체는 보이지 않지만 응용은 영패 검증을 바탕으로 하는 검증을 통해 할 수 있다. 이것은 프록시가 백그라운드에서 2048자가 넘는post 요청을 처리했기 때문이다.또한 하나의 응용 프로그램과 도입해야 할 자원 사이에 크로스 필드 문제가 존재할 때 에이전트는 크로스 필드 접근 문제를 해결하는 데 도움을 줄 수 있다.
우리가 요청한 URL의 총 주소 길이가 2048자보다 크면, get 요청을 에이전트를 통해post 요청으로 변환할 수 있습니다. 그러면 길이가 제한되는 문제를 피할 수 있습니다.
3. 해결
3.1 프록시 패키지 다운로드
https://github.com/Esri/resource-proxy/releases, 다음을 참조하십시오.
1.1.0
@bsvensson bsvensson released this on 6 Nov 2015 ・ 8 commits to master since this release
Added
Support for 10.3 tokens
Support for federated services
Support for hostRedirect to use aliased domains
Added "?ping"for easier testing
(DotNet) Support for Windows authentication
디렉토리에는 서로 다른 웹 서버 유형에 해당하는 세 개의 하위 디렉토리가 있습니다.
(1) DotNet IIS 서버
(2) Java > Tomcat 서버
(3) PHP 아파치 서버
3.2 IIS에 배포
IIS 서버에서 DotNet 폴더 아래의 네 개의 파일을 IIS의 wwwroot 디렉터리로 복사합니다. 아래와 같습니다. (Web.config 파일은 프로젝트의 웹.config 폴더에만 복사할 수 있습니다.)
proxy.ashx,proxy.config,proxy.xsd,Web.config
브라우저에서localhost/prosy에 접근합니다.ashx, 다음 결과를 되돌려주면 설정이 성공했습니다.
프로필proxy를 수정합니다.config, 다음을 추가합니다.
<?xml version="1.0" encoding="utf-8" ?>
<ProxyConfig allowedReferers="*"  mustMatch="true">
    <serverUrls>
      <serverUrl url="http://services.arcgisonline.com"   matchAll="true"/>
      <serverUrl url="http://59.75.119.108:6080/arcgis/rest/services"   matchAll="true"/>
      <serverUrl url="http://localhost:6080/arcgis/rest/services"   matchAll="true"/>
    </serverUrls>
</ProxyConfig>
<!-- See https://github.com/Esri/resource-proxy for more information -->

설명: 주소가 ArcGIS 글로벌 계정의 인증이 필요하면 URL에 사용자 이름과 비밀번호 정보를 추가해야 합니다.
예:
응용 프로그램에서 프록시를 구성하여 사용할 프록시 코드에 추가하면 됩니다.
    esriConfig.defaults.io.proxyUrl = "proxy.ashx";
    esriConfig.defaults.io.alwaysUseProxy = false;

본고는 "IT 기술 학습과 교류"블로그에서 나온 것으로 전재를 사절합니다!

좋은 웹페이지 즐겨찾기