Luana, esse erro aparece porque o JavaScript do portal está montando a URL do backend sem o esquema “http://”. O navegador nem chega a enviar a requisição e exibe:
Cross-origin requests are only supported for protocol schemes: http, https…
1 — Corrija o endereço da API no portal
Abra o ConfigMap (ou o arquivo .js que define a variável de ambiente) e altere:
API_URL=localhost:30001/noticias.php # valor atual (incorreto)
para
API_URL=http://localhost:30001/noticias.php # valor correto
Depois aplique a mudança e reinicie o deployment do portal:
kubectl apply -f portal-configmap.yaml
kubectl rollout restart deployment portal
2 — Habilite CORS no serviço de notícias
Com o esquema corrigido, a requisição finalmente sairá do portal (porta 30000) para o backend (porta 30001). Como são origens diferentes, o backend precisa liberar CORS. No início de noticias.php adicione:
header("Access-Control-Allow-Origin: http://localhost:30000");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
exit; // pré-flight
}
Para desenvolvimento você pode usar *
em vez de indicar a origem, mas em produção limite o domínio.
Recrie a imagem ou mapeie o arquivo atualizado no pod e faça:
kubectl rollout restart deployment noticias
3 — Teste no navegador
Abra DevTools → Network em http://localhost:30000
e verifique:
- A requisição a
/noticias.php
aparece? - O status é 200?
- O cabeçalho
Access-Control-Allow-Origin
vem com http://localhost:30000
?
Se tudo isso estiver ok, as notícias devem ser exibidas no portal.
4 — Alternativas sem lidar com CORS
- Ingress: exponha frontend e backend no mesmo host/porta (
http://portal.local/…
). - Proxy reverso no pod do portal: o JS fala com
/api
, e o proxy redireciona para noticias
.
Caso ainda encontre problemas, compartilhe aqui o trecho do ConfigMap ou do noticias.php
e a gente olha junto.