Cross-Origin-Resource-Sharing (CORS) en la plataforma K5 de Fujitsu

2017-03-24

Cross-Origin-Resource-Sharing (CORS) en la plataforma K5 de Fujitsu

Machine-translated — the English original is authoritative.

Cualquier desarrollador que haya trasladado el desarrollo de su aplicación front-end desde un entorno de producción donde se encuentra dentro de un mismo dominio, por ejemplo https://allthingscloud.eu, a un entorno local de 'escritorio' donde ahora realiza solicitudes desde http://localhost, estará familiarizado con este error:

Es un mecanismo de seguridad integrado en casi todos los navegadores web modernos diseñado para prevenir ataques maliciosos como el cross-site-scripting (inyección de scripts entre sitios).

Existen dos formas de abordar este desafío, siempre que tenga una necesidad legítima de trabajar entre diferentes dominios:

Los puntos de conexión (endpoints) de la API de Fujitsu K5 no admiten CORS actualmente, por lo que opté por un Proxy CORS durante mi reciente desafío de desarrollo. Esto es mucho más fácil de lo que parece, especialmente si le gusta trabajar con NodeJS. Hay muchos módulos NPM disponibles que requieren solo una o dos líneas de código para implementar un servidor proxy CORS. Por ejemplo, corsproxy y corsproxy-https. Sin embargo, después de algunas pruebas, decidí utilizar el módulo cors-anywhere ya que este módulo reenvía tanto el cuerpo de la respuesta http COMO las cabeceras de respuesta, algo que no todos los proxies se molestan en hacer.

El servidor proxy simple se ve así:

Este archivo contiene texto Unicode oculto o bidireccional que puede interpretarse o compilarse de manera diferente a lo que aparece a continuación. Para revisarlo, abra el archivo en un editor que revele caracteres Unicode ocultos.
Más información sobre caracteres Unicode bidireccionales

Mostrar caracteres ocultos

// Heroku define la variable de entorno PORT, y requiere que la dirección de enlace sea 0.0.0.0
var host = process.env.PORT ? '0.0.0.0' : '127.0.0.1';
var port = process.env.PORT
var cors_proxy = require('cors-anywhere');
cors_proxy.createServer({
originWhitelist: [], // Permitir todos los orígenes
//requireHeader: ['origin', 'x-subject-token'],
}).listen(port, host, function() {
console.log('Ejecutando CORS Anywhere en ' + host + ':' + port);
});

ver código original
cors_proxy_service.js
alojado con ❤ por GitHub

La aplicación Angular 2 donde la utilicé se puede descargar aquí – https://github.com/allthingsclowd/K5_Angular_2_Example_Login

¡Feliz apilamiento!

withk5youcan

Originally published on allthingscloud.eu (2017-03-24).

← All posts