Semplicemente aggiungendo un 'Permetti richieste di origine incrociata' alla mia app di nodo funziona?

1

Sto cercando di creare un "web raschietto frontale". Mi è venuta l'idea di creare un'app di nodi con una route dinamica che utilizzava Request (il pacchetto NPM) per raschiare le pagine e visualizzarle come se fossero le proprie. Quindi il mio plugin JS aggiungerebbe un iframe invisibile a qualunque pagina sia utilizzata con 'nodeapp.com/[URL-TO-SCRAPE'. Quindi utilizzare la funzione getElementById () per ottenere il testo. La ragione per cui pongo questa domanda è perché so che non è possibile utilizzare getElementById () su più origini, ma se potessi ottenere la pagina su un'app di heroku con un'intestazione "Consenti richieste di origine incrociate", funzionerebbe? So che la mia domanda è molto confusa.

    
posta Isaac Wasserman 22.03.2015 - 20:30
fonte

1 risposta

1

Quello che stai descrivendo è un proxy inverso .

CORS consente la lettura delle risorse tra le origini, ma non consente letture iframe di origine incrociata. Tuttavia, se il proxy inverso serve intestazioni CORS permissive (ad esempio Access-Control-Allow-Origin: * ), il contenuto del proxy inverso sarà leggibile con una richiesta Ajax . Devi semplicemente presentare una richiesta Ajax a nodeapp.com/[URL-TO-SCRAPE] , caricare l'HTML recuperato in un documento , quindi trova l'elemento con myNewDocument.getElementById .

Si noti che se la pagina che legge l'iframe è della stessa origine del proxy inverso, CORS non è nemmeno necessario. (Se sono origini diverse, CORS sulla pagina recuperata è sufficiente per consentire la lettura del contenuto del proxy.)

Nota anche che i proxy inversi non useranno i cookie dell'utente quando effettuano la richiesta alla pagina. Ad esempio, quando il tuo proxy inverso prende gmail.com , mostrerà all'utente la pagina di accesso a Gmail, non la casella di posta dell'utente. Se il contenuto che stai cercando di leggere non è protetto da credenziali (ad esempio, può essere letto senza effettuare il login), non ci saranno problemi.

    
risposta data 23.03.2015 - 14:15
fonte

Leggi altre domande sui tag