CORS代理(php)无法连接到端口
当我在浏览器地址栏中请求时,我正确地收到了元数据 在我的应用程序中,由于CORS问题,对给定路径的请求失败。我无法访问服务器来修改标题,因此我正在尝试使用PHP创建CORS代理CORS代理(php)无法连接到端口,php,proxy,cors,Php,Proxy,Cors,当我在浏览器地址栏中请求时,我正确地收到了元数据 在我的应用程序中,由于CORS问题,对给定路径的请求失败。我无法访问服务器来修改标题,因此我正在尝试使用PHP创建CORS代理 <?php if( ! isset($curl_timeout)) $curl_timeout = 30; $headers = getallheaders(); $method = __('REQUEST_METHOD', $_SERVER); $url = $_GET['url']; // Chec
<?php
if( ! isset($curl_timeout))
$curl_timeout = 30;
$headers = getallheaders();
$method = __('REQUEST_METHOD', $_SERVER);
$url = $_GET['url'];
// Check that we have a URL
if( ! $url)
http_response_code(400) and exit("Url missing");
foreach($headers as $key => &$value) {
$value = "$key: $value";
}
$curl = curl_init();
do
{
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_PORT => 4101,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_HEADER => TRUE,
CURLOPT_TIMEOUT => $curl_timeout,
CURLOPT_FOLLOWLOCATION => TRUE
]);
// Method specific options
switch($method)
{
case 'HEAD':
curl_setopt($curl, CURLOPT_NOBODY, TRUE);
break;
case 'GET':
break;
case 'PUT':
case 'POST':
case 'DELETE':
default:
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_POSTFIELDS, file_get_contents('php://input'));
break;
}
// Perform request
ob_start();
curl_exec($curl) or http_response_code(500) and exit(curl_error($curl));
$out = ob_get_clean();
$url = curl_getinfo($curl, CURLINFO_REDIRECT_URL);
}
while($url and --$maxredirs > 0);
$info = curl_getinfo($curl);
curl_close($curl);
// Remove any existing headers
header_remove();
// Use gz, if acceptable
// ob_start('ob_gzhandler');
// Output headers
$header = substr($out, 0, $info['header_size']);
array_map('header', explode("\r\n", $header));
// And finally the body
echo substr($out, $info['header_size']);
// Helper function
function __($key, array $array, $default = null)
{
return array_key_exists($key, $array) ? $array[$key] : $default;
}
三件事
http://fmgold.mvserver.be:4101/7.html
在浏览器中,不涉及“来源””标题,您可以
通过向其发出GET请求进行响应
但在服务器端,当您发出请求时,
您要做的是获取服务器头$headers=getallheaders()
并在curl请求中设置所有这些
CURLOPT\u HTTPHEADER=>$headers,
并执行它
我的假设是,$headers
包含“Origin”头和
由于此原因,主机服务器正在拒绝您对CORS的请求
删除此CURLOPT\u HTTPHEADER=>$headers,
,然后重试。它应该
工作
您的代码似乎没有问题。作品完美,输出“1,1,10,10,1,64,CLAUDIA JUNG&CLAYDERMAN-我爱你”。可能是他们服务器上的临时故障?如果CORS阻止这个端口,你不太可能做到,becos启用CORS的唯一原因是为了避免这些类型的不可信安全问题locations@mahen3d通过使用部署为heroku应用程序的cors anywhere解决方案,我成功地实现了检索目标url的内容(请参阅)。因此,我试图在我的服务器上用PHP实现同样的目标。所以这应该是可能的,对吧?@ElFred你怎么知道它的CORS导致了“连接被拒绝”,因为“连接被拒绝”可能有很多不同的原因。你能发布错误日志证明问题与CORS有关吗?(似乎有人对CORS的所有问题和答案给出-1,StackOverflow应该禁止这个。)