All Projects → Esri → Resource Proxy

Esri / Resource Proxy

Licence: apache-2.0
Proxy files for DotNet, Java and PHP.

Projects that are alternatives of or similar to Resource Proxy

V2ray Rules Dat
🦄 🎃 👻 V2Ray 路由规则文件加强版,可代替 V2Ray 官方 geoip.dat 和 geosite.dat,兼容 Shadowsocks-windows、Xray-core、Trojan-Go 和 leaf。Enhanced edition of V2Ray rules dat files, compatible with Xray-core, Shadowsocks-windows, Trojan-Go and leaf.
Stars: ✭ 6,550 (+1815.2%)
Mutual labels:  proxy
Compoxure
Proxy middleware for express that enables composition of microservices.
Stars: ✭ 332 (-2.92%)
Mutual labels:  proxy
Ssh Mitm
ssh mitm server for security audits supporting public key authentication, session hijacking and file manipulation
Stars: ✭ 335 (-2.05%)
Mutual labels:  proxy
Socks5
SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support
Stars: ✭ 321 (-6.14%)
Mutual labels:  proxy
Doh Server
Fast, mature, secure DoH server proxy written in Rust (doh-proxy).
Stars: ✭ 327 (-4.39%)
Mutual labels:  proxy
Gopee
☁️ Full-Fledged, Self-Hosted Web Proxy in Go
Stars: ✭ 336 (-1.75%)
Mutual labels:  proxy
Gmusicproxy
Google Play Music Proxy - "Let's stream Google Play Music using any media-player"
Stars: ✭ 316 (-7.6%)
Mutual labels:  proxy
Loading Attribute Polyfill
Fast and lightweight dependency-free vanilla JavaScript polyfill for native lazy loading / the awesome loading='lazy'-attribute.
Stars: ✭ 335 (-2.05%)
Mutual labels:  web-development
Pug Starter
Simple pug (jade) starter [framework] enabling faster delivery of HTML & CSS projects to a private server and/or automatic deployment of GitHub pages.
Stars: ✭ 328 (-4.09%)
Mutual labels:  web-development
Openapi Cop
A proxy that validates responses and requests against an OpenAPI document.
Stars: ✭ 338 (-1.17%)
Mutual labels:  proxy
Fiddler Plus
自定义的Fiddler规则,多环境切换、解决跨域开发、快速调试线上代码必备|高效调试分析利器
Stars: ✭ 325 (-4.97%)
Mutual labels:  proxy
Proxypool
跨语言IP代理池,Python实现。
Stars: ✭ 326 (-4.68%)
Mutual labels:  proxy
Proxygateway
Proxy Gateway基于openresty(nginx lua module)开发,可以作为接口网关(api gateway)使用,整合业务模块接口,微服务治理聚合,通过web配置界面,能够轻松进行代理配置管理,支持负载均衡,服务器状态检测等
Stars: ✭ 335 (-2.05%)
Mutual labels:  proxy
Mellow
Mellow is a rule-based global transparent proxy client for Windows, macOS and Linux. Also a Proxifier alternative.
Stars: ✭ 3,375 (+886.84%)
Mutual labels:  proxy
Mastermind
Man in the middle testing
Stars: ✭ 341 (-0.29%)
Mutual labels:  proxy
Publish
A static site generator for Swift developers
Stars: ✭ 3,719 (+987.43%)
Mutual labels:  web-development
Forwardproxy
Forward proxy plugin for the Caddy web server
Stars: ✭ 333 (-2.63%)
Mutual labels:  proxy
Kore
Kore (https://kore.io) is an easy to use web application platform for writing scalable web APIs in C. Its main goals are security, scalability and allowing rapid development and deployment of such APIs.
Stars: ✭ 3,477 (+916.67%)
Mutual labels:  web-development
E2guardian
E2guardian is a web content filter that can work in proxy, transparent or icap server modes
Stars: ✭ 340 (-0.58%)
Mutual labels:  proxy
Gomitmproxy
gomitmproxy是想用golang语言实现[mitmproxy],实现http(s)代理
Stars: ✭ 337 (-1.46%)
Mutual labels:  proxy

Best practices

There are several recommended solutions to use instead of your own resource-proxy:

Developer tools for working with CORS

For testing and development when working with CORS-enabled services:

  • There are Chrome extensions available through the Chrome web store.
  • Some browsers may allow you to temporarily modify the enforcement of the same-origin policy. For example, in Chrome you can set the --disable-web-security command-line flag. More information is available in Run Chromium with flags.

Proxy files for DotNet, Java and PHP

These proxy files support:

  • Accessing cross domain resources
  • Requests that exceed 2048 characters
  • Accessing resources secured with token based authentication.
  • OAuth 2.0 app logins.
  • Enabling logging
  • Both resource and referer based rate limiting

Ensure that you follow the Terms & Conditions of the Esri systems and software that you are working with. In general, it is not permitted to embed credentials in a resource proxy for the purpose of bypassing Named User authentication (i.e. the principle that each end-user must have their own unique login). This is true both when using a resource proxy with ArcGIS Online as well as for ArcGIS Server sites federated as part of an ArcGIS Enterprise deployment.

Instructions

  • Download and unzip the .zip file or clone the repository. You can download a released version (recommended) or the most recent daily build.
  • Follow the instructions in the readme file in the folder of the proxy you want to install (DotNet, Java, PHP) for installation instructions.

Folders and Main Files

Troubleshooting

  • Watch the web requests being handled by the proxy to ensure that the proxy and the web resource locations are correct and properly configured in the application. Use something like Fiddler or developer tools like Network panel in Chrome Developer Tools.

Product Resources

Proxy Configuration Settings

All three proxies respect the XML configuration properties listed below.

  • Use the ProxyConfig tag to specify the following proxy level settings.
    • mustMatch="true" : When true only the sites listed using serverUrl will be proxied. Set to false to proxy any site, which can be useful in testing. However, we recommend setting it to true for production sites.
    • allowedReferers="http://server.com/app1,http://server.com/app2" : A comma-separated list of referer URLs. Only requests coming from referers in the list will be proxied. See https://github.com/Esri/resource-proxy/issues/282 for detailed usage.
    • logFile="proxylog.txt" : When a logFile is specified, the proxy will log messages to this file. N.B.: The folder containing the logFile must be writable by the web server. If a path is not specified, the .Net proxy uses the folder where the proxy.config file is found. (The Java proxy uses java.util.logging.FileHandler to open the file; the PHP proxy uses fopen to open the file.)
    • logLevel="Error" : An optional flag indicating the level of detail to write to the logFile. Flags for each of the various languages are listed below.
      • .Net levels are "Error", "Warning", "Info", and "Verbose" in order from fewest to most messages; the default is "Error".
      • Java levels are "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER", and "FINEST" in order from fewest to most messages; the default is "SEVERE".
      • PHP levels are 0 (writes messages and errors to logs), 1 (shows proxy errors and messages in browser console), 2 (combination of levels 0 and 1), and 3 (no logging); the default is 0.
  • Add a new <serverUrl> entry for each service that will use the proxy. The proxy.config allows you to use the serverUrl tag to specify one or more ArcGIS Server services that the proxy will forward requests to. The serverUrl tag has the following attributes:
    • url: Location of the ArcGIS Server service (or other URL) to proxy. Specify either the specific URL or the root (in which case you should set matchAll="false").
    • matchAll="true": When true all requests that begin with the specified URL are forwarded. Otherwise, the URL requested must match exactly.
    • username: Username to use when requesting a token - if needed for ArcGIS Server token based authentication.
    • password: Password to use when requesting a token - if needed for ArcGIS Server token based authentication.
    • tokenServiceUri: If username and password are specified, the proxy will use the supplied token service uri to request a token. If this value is left blank, the proxy will request a token URL from the ArcGIS server.
    • useAppPoolIdentity: When true, the IIS application pool identity will be used for authenticating with secured resources. This configuration will supersede the domain, username, and password configurations. The default is false. Only applies to DotNet proxy.
    • domain: The Windows domain to use with username/password when using Windows Authentication. Only applies to DotNet proxy.
    • clientId. Used with clientSecret for OAuth authentication to obtain a token - if needed for OAuth 2.0 authentication. NOTE: If used to access hosted services, the service(s) must be owned by the user accessing it, (with the exception of credit-based esri services, e.g. routing, geoenrichment, etc.)
    • clientSecret: Used with clientId for OAuth authentication to obtain a token - if needed for OAuth 2.0 authentication.
    • oauth2Endpoint: When using OAuth 2.0 authentication specify the portal specific OAuth 2.0 authentication endpoint. The default value is https://www.arcgis.com/sharing/oauth2/.
    • accessToken: OAuth2 access token to use instead of on-demand access-token generation using clientId & clientSecret. Only applies to DotNet proxy.
    • rateLimit: The maximum number of requests with a particular referer over the specified rateLimitPeriod.
    • rateLimitPeriod: The time period (in minutes) within which the specified number of requests (rate_limit) sent with a particular referer will be tracked. The default value is 60 (one hour).
    • hostRedirect: The real URL to use instead of the "alias" one provided in the url property and that should be redirected. Example: <serverUrl url="http://fakedomain" hostRedirect="http://172.16.85.2"/>.

Note: Refresh the proxy application after updates to the proxy.config have been made.

Example of proxy using application credentials and limiting requests to 10/minute

<serverUrl url="http://route.arcgis.com"
    clientId="6Xo1d-example-9Kn2"
    clientSecret="5a5d50-example-c867b6efcf969bdcc6a2"
    rateLimit="600"
    rateLimitPeriod="60"
    matchAll="true">
</serverUrl>

Example of a tag for a resource which does not require authentication

<serverUrl url="http://sampleserver6.arcgisonline.com/arcgis/rest/services"
    matchAll="true">
</serverUrl>

Requirements

  • See the README.md file in the folder of the proxy you want to install for platform specific requirements.

Issues

Found a bug or want to request a new feature? Check out previously logged Issues and/or our FAQ. If you don't see what you're looking for, feel free to submit a new issue.

Contributing

Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.

Release steps (for maintainers)

  1. run npm install gh-release inside the directory which houses the repository (this only needs to be done once)
  2. bump proxy version numbers and changelog
  3. commit your changes git commit -m '📦 1.x.x'
  4. run gh-release at the command line. this will create a tag using the current SHA and use whats in the changelog in the release notes

License

Copyright 2014-2021 Esri

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

A copy of the license is available in the repository's LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].