Tengo un servidor web de intranet. No tiene certificados de ningún tipo y se accede a través de http. Es técnicamente una IP pública pero no tiene enrutamiento público.
En este servidor web, tengo una aplicación de una sola página que necesita llamar a un punto final https api nodejs/express en un servidor diferente (que también controlo). Solo tuve que agregar la biblioteca cors y 'usarla': app.use(cors()) Esto funcionó hace aproximadamente un mes.
Ahora, cuando hago esto, me sale el siguiente error:
El cliente de la solicitud no es un contexto seguro y el recurso está en un espacio de direcciones más privado
private.
La búsqueda me trajo aquí: error de Chrome CORS en la solicitud al servidor de desarrollo localhost desde un sitio remoto que efectivamente dice "haga que su servidor sea https".
Las respuestas adicionales indican que agregar un encabezado: Access-Control-Allow-Private-Network: true sería todo lo que se necesita. Esto está respaldado por la documentación aquí: https://wicg.github.io/private-network-access/#:~:text=The%20Access%2DControl%2DRequest%2D,safely%20shared%20with%20external%20networks indicando:
Access-Control-Allow-Private-Network indica que un recurso se puede compartir de forma segura con redes externas.
He intentado esto en el servidor api agregando
app.use((req, res, next) => { res.setHeader("Access-Control-Allow-Private-Network", "true") next(); }) justo después de mi línea app.use(cors()) agregada anteriormente.
Esto me deja con:
const app = express() app.use(express.urlencoded({ extended: true })) app.use(cors()) app.use((req, res, next) => { res.setHeader("Access-Control-Allow-Private-Network", "true") next(); }) app.use(express.json()) app.use('/api', jobRouter);Esto no elimina el error.
¿Qué se debe hacer para permitir que mi servidor intranet no http acceda a un servidor https? Yo controlo ambos lados.