Cross-Origin-Resource-Sharing (CORS) sulla piattaforma K5 di Fujitsu

2017-03-24

Cross-Origin-Resource-Sharing (CORS) sulla piattaforma K5 di Fujitsu

Machine-translated — the English original is authoritative.

Qualsiasi sviluppatore che abbia spostato lo sviluppo della propria applicazione front-end da un ambiente di produzione in cui si opera all'interno dello stesso dominio, ad esempio https://allthingscloud.eu, a un ambiente locale 'desktop' dove ora si effettuano richieste da http://localhost, conoscerà bene questo errore:

Si tratta di un meccanismo di sicurezza integrato nella quasi totalità dei browser web moderni, progettato per prevenire attacchi malevoli come lo cross-site-scripting.

Esistono due modi per affrontare questa sfida, a patto che si abbia una legittima necessità di operare tra domini diversi:

Gli endpoint API di Fujitsu K5 non supportano attualmente il CORS, quindi un CORS Proxy è ciò che ho scelto durante la mia recente sfida di sviluppo. Questo è molto più facile di quanto sembri, specialmente se si piace lavorare con NodeJS. Sono disponibili molti moduli NPM che richiedono solo una o due righe di codice per implementare un server proxy CORS. Ad esempio corsproxy e corsproxy-https. Tuttavia, dopo alcuni test, ho deciso di utilizzare il modulo cors-anywhere poiché questo modulo inoltra sia il corpo della risposta http che le intestazioni di risposta... qualcosa che non tutti i proxy si preoccupano di fare.

Il semplice server proxy appare così:

Questo file contiene caratteri Unicode nascosti o bidirezionali che potrebbero essere interpretati o compilati in modo diverso da quanto appare di seguito. Per rivederli, aprire il file in un editor che riveli i caratteri Unicode nascosti.
Maggiori informazioni sui caratteri Unicode bidirezionali

Mostra caratteri nascosti

// Heroku definisce la variabile d'ambiente PORT e richiede che l'indirizzo di binding sia 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: [], // Consenti tutti gli origin
//requireHeader: ['origin', 'x-subject-token'],
}).listen(port, host, function() {
console.log('Esecuzione di CORS Anywhere su ' + host + ':' + port);
});

visualizza il codice grezzo
cors_proxy_service.js
ospitato con ❤ da GitHub

L'applicazione Angular 2 in cui l'ho utilizzata può essere scaricata qui – https://github.com/allthingsclowd/K5_Angular_2_Example_Login

Happy Stacking!

withk5youcan

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

← All posts