softius/cors-proxy

PHP CORS代理

dev-master / 1.0.x-dev 2018-09-21 14:12 UTC

This package is auto-updated.

Last update: 2024-09-21 20:30:59 UTC


README

Latest Version on Packagist Total Downloads

以前被称为 "PHP 跨域(AJAX)代理"}

PHP CORS代理是一个简单的PHP脚本,允许跨域请求。当无法在目标网站上启用CORS时,可以使用它来访问第三方网站的资源,例如,当您不拥有该网站时。

注意:请查看如何启用您服务器上的CORS,以确定此解决方案是否确实必要。

概览

功能

  • 作为反向代理:请求头和数据从代理传播到服务器。同样,响应头和数据从代理传播到客户端。
  • 支持所有方法:GET、POST、PUT、DELETE。
  • 也支持HTTPS。
  • 请求可以与受信任的域名或URL列表进行筛选。
  • 外部配置(进行中)
  • 错误处理,即当服务器不可用时(进行中)
  • 调试模式(进行中)

要求

PHP Cors Proxy与PHP 5.3+或更高版本兼容。

作者

许可证

PHP CORS代理根据GPL-3.0授权。有关详细信息,请参阅LICENCE.txt文件。

安装

使用composer

composer require softius/cors-proxy

手动安装

代理仅限于一个文件。您只需将proxy.php放置在应用程序的公共文件夹下即可。

配置

出于安全原因,请务必在proxy.php文件的最上面部分定义所有受信任的域名/URL。

$valid_requests = array(
    'http://www.domainA.com/',
    'http://www.domainB.com/path-to-services/service-a'
);

注意:目前正在进行的工项允许在proxy.php之外进行配置

使用方法

可以通过提供X-Proxy-URL头或通过传递特殊的GET参数来初始化跨域请求。强烈建议使用前一种方法,因为它不会修改请求查询。此外,请求看起来更清晰,更容易理解。

使用头部

可以通过使用X-Proxy-URL头指定目标URL,这可能比使用您的JavaScript库设置更容易。例如,如果您想自动为外部URL目标使用代理,用于GET和POST请求

$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
    if (options.url.match(/^https?:/)) {
        options.headers['X-Proxy-URL'] = options.url;
        options.url = '/proxy.php';
    }
});

以下示例使用curl

curl -v -H "X-Proxy-URL: http://cross-domain.com" http://yourdomain.com/proxy.php

使用查询

为了进行跨域请求,只需向http://www.yourdomain.com/proxy.php发送请求,并使用csurl(GET)参数指定目标URL。显然,您可以根据需要添加更多参数;请注意,其余参数将在跨域请求中使用。例如,如果您正在使用jQuery

$('#target').load(
    'http://www.yourdomain.com/proxy.php', {
        csurl: 'http://www.cross-domain.com/',
        param1: value1,
        param2: value2
    }
);

以下示例使用curl

curl -v "http://yourdomain.com/proxy.php?csurl=http://www.cross-domain.com/&param1=value1&param2=value2"