Executando verificação de segurança...
1

Como criar um servidor web proxy em PHP para contornar o erro de CORS?

Olá comunidade do TabNews,

Estou interessado em desenvolver um servidor web proxy em PHP que permita aos usuários acessar sites de domínios diferentes através dele, contornando o erro de CORS (Cross-Origin Resource Sharing). O objetivo é criar uma camada intermediária que faça solicitações em nome do usuário, permitindo assim o acesso a conteúdos que possam estar bloqueados em determinados domínios devido às restrições de CORS.

Exemplo do código que já tenho:

<?php
// 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.";
}

Mesmo com esse código ainda não consigo solucionar o problema completamente. Gostaria de uma solução mais funcional. Agradeço antecipadamente qualquer ajuda ou exemplo de código que possa me encaminhar na direção certa.

Carregando publicação patrocinada...
1

O CORS não é um problema.
Basta o programador configurar quais URLs fora do domínio ele permite acesso.

<?php
 header("Access-Control-Allow-Origin: *");

Não usar *, colocar URLs reais, ou seja, sites externos que contenham scripts que o seu programa realmente precisa.
É uma ótima defesa em termos de segurança.
Os hackers (ou crackers, como queira) odeiam CORS, isso obriga eles a criarem scripts de forma local e dá um trabalhão, pois o CORS só aceita scripts do próprio domínio, os permitidos e scripts locais.

1

Olá Wellingto79, acho que posso ter me expressado mal! Já que me refiro ao erro resultante de uma solicitação de origem cruzada. E eu não tenho como mudar o cabeçalho de resposta dos outros sites. Por esse motivo o servidor proxy, para contornar isso, no entanto não sei como obter ou programar um. Mas de qualquer forma já agradeço pelo retorno.