Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vraagje front-en backend (node.js beginner)

Pagina: 1
Acties:

  • phpkid
  • Registratie: April 2009
  • Laatst online: 07-12-2021
Ok het volgende is waar;
Je browser laat niet toe dat je van server a een get stuurt naar server b.
Je moet front en backend dus op dezelfde server hosten.

Maar hier is er iets wat ik niet snap om front met backend op te zetten (ben node.js code aan het bekijken).
Je verstuurt in de frontend een call naar "service/a/getCars". Maar hier wordt geen poort bijgezet..

Hoe weet frontend dan naar welke backend hij moet? Je kan toch meerdere node servers starten op verschillende poorten? Kan iemand mij even uitleggen hoe dit juist zit? Ik zie even het bos niet meer door de bomen :X


edit: ik heb net een vps gehuurd en ben hier ook wat op aan het prullen. Ik ga dit eerst wat verder onderzoeken of deze al een server standaard draait (html weergeven in var/www)

[ Voor 13% gewijzigd door phpkid op 18-01-2014 19:35 ]


  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

phpkid schreef op zaterdag 18 januari 2014 @ 19:24:
Ok het volgende is waar;
Je browser laat niet toe dat je van server a een get stuurt naar server b.
Je moet front en backend dus op dezelfde server hosten.
Dat is dus niet waar. Je kunt gewoon requests plaatsen naar een server op een ander subdomein/domein waarbij het echt niet uitmaakt of die op dezelfde server draaien of niet.
phpkid schreef op zaterdag 18 januari 2014 @ 19:24:
Maar hier is er iets wat ik niet snap om front met backend op te zetten (ben node.js code aan het bekijken).
Je verstuurt in de frontend een call naar "service/a/getCars". Maar hier wordt geen poort bijgezet..

Hoe weet frontend dan naar welke backend hij moet? Je kan toch meerdere node servers starten op verschillende poorten? Kan iemand mij even uitleggen hoe dit juist zit? Ik zie even het bos niet meer door de bomen :X


edit: ik heb net een vps gehuurd en ben hier ook wat op aan het prullen. Ik ga dit eerst wat verder onderzoeken of deze al een server standaard draait (html weergeven in var/www)
Als je met je browser een request stuurt naar bijvoorbeeld www.tweakers.net stuurt hij de volgende header mee:
code:
1
Request URL:http://tweakers.net/

en voor een gathering.tweakers.net request:
code:
1
Request URL:http://gathering.tweakers.net/

Laat het nu zo zijn dat die op hetzelfde poort en IP uitkomen:
code:
1
2
Pinging www.tweakers.net [213.239.154.20]
Pinging gathering.tweakers.net [213.239.154.20]

De server bekijkt wat er moet gebeuren aan de hand van die header. Binnen bijvoorbeeld Apache regel je dat met Vhosts in je httpd.conf. Binnen Node gooi je middleware tussen je request. Ik gebruik hier voor Express, wat meer een soort van superset/frameworkje om Node HTTP is. Hier mijn verkorte server applicatie:
code:
1
2
3
4
5
6
7
8
9
var express = require('express'), app = express();

app.use(express.vhost('n5030', require('./web/')));
app.use(express.vhost('api.n5030', require('./api/')));
app.use(express.vhost('library.n5030', require('./library/')));

app.listen(80);

console.log('app listening on port 80...');

Hier worden requests naar n5030, api.n5030 en library.n5030 geredirect naar hun respectievelijke apps. n5030 is een angular applicatie welke requests maakt naar api.n5030. Zonder de juiste configuratie worden deze requests (cross-origin) inderdaad standaard geblocked. Je kunt dit (CORS) wel configureren. Als mijn browser nu een cors-request maakt vanaf n5030 naar api.n5030 maakt hij voorafgaande aan de eigenlijke request een pre-flight request met de volgende header:
code:
1
Origin:http://n5030

Als de API applicatie nu de juiste responseheader terugstuurt:
code:
1
Access-Control-Allow-Origin:http://n5030
dan accepteer de browser het wel en voert dan de eigenlijke request uit. Voorbeeld van mijn uitgeklede API app:
code:
1
2
3
4
5
6
var express = require('express'), api = express();
api.all('*', function(req, res, next){
    res.header('Access-Control-Allow-Origin', 'n5030');
    next();
});
return api;


Ik zou een beetje inlezen op CORS: Wikipedia: Cross-origin resource sharing Had hier laatst al een uitleg over gegeven maar je moet wel langs mijn "fans" aflezen: iH8 in "[JS] [AJAX] [SSL] Inloggen met AJAX in modal beveiligen" Kijk ook even naar Express: http://expressjs.com/ Over Node/Express is enorm veel te vinden, onthoud dan ook meteen MEAN even als keyword erbij. Succes!

Aunt bunny is coming to get me!