Testei no chrome, edge e firefox. Claro o código etá todo aqui:
<?php
//trecho adicionado
$method = $_SERVER['REQUEST_METHOD'];
$origin = $_SERVER['HTTP_ORIGIN'];
if ($method === 'OPTIONS') {
$requestMethod = $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'];
$requestHeaders = $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'];
header("Access-Control-Allow-Methods: $requestMethod");
header("Access-Control-Allow-Headers: $requestHeaders");
}
header("Access-Control-Allow-Origin: $origin");
header('Access-Control-Allow-Credentials: true');
//trecho adicionado
// Verifica se a URL de destino foi fornecida na query string
if (isset($_GET['url'])) {
$url = $_GET['url'];
// Configura opções de stream para o contexto de file_get_contents
$options = array(
'http' => array(
'header' => "User-Agent: PHP\r\n",
'method' => $_SERVER['REQUEST_METHOD'],
'follow_location' => false // Evita redirecionamentos no proxy
)
);
// Cria o contexto para a requisição
$context = stream_context_create($options);
// Realiza a requisição para a URL de destino usando file_get_contents
$result = file_get_contents($url, false, $context);
// Pega os headers da resposta para enviar ao cliente
$headers = $http_response_header;
//Envia os headers para o cliente
foreach ($headers as $header) {
header($header);
}
echo $result;
} else {
// Caso a URL de destino não tenha sido fornecida, retorna um erro
header("HTTP/1.0 400 Bad Request");
echo "URL de destino não especificada.";
}