2012-04-01 18 views
7
url=require('url'); 

qs=require('querystring'); 

var http=require('http'); 

http.createServer(server).listen(1337, 'hostname'); 

function server(req, res) { 

    res.writeHead(200, {'Content-Type': 'text/plain'}); 

    res.write(req.url); 

    a=url.parse(req.url, true); 

    console.log(a); 

    res.end('\nHello World\n'); 

} 

console.log('Server running at http://127.0.0.1:1337/'); 




//http://host:1337/#A=1111111 <--- not coming in log or url 
//http://host:1337/?A=11111111 <--- works ok 

//usecase : facebook access_token url format is something similar to above 
+1

Cuando solicita una URL como esta http: // host: 1337/# A = 1111111 solo la envía al servidor http: // host: 1337/y este fragmento al navegador # A = 1111111 Facebook obtiene esta URL localmente en el navegador, la analiza y la cambia a una variable get como esta http: // host: 1337 /? A = 11111111 Luego solicita los datos usando AJAX, analiza todos los datos y los escribe en el navegador. Esta es una técnica antigua que requiere el evento 'onhashchange', actualmente, la mejor manera de hacerlo es implementando pushState y cambiando toda la URL sin actualizar la página. – neojp

Respuesta

19

La parte de la URL después del signo de '#', llamado el fragment, no se envía al servidor. Si almacena datos en el fragmento, depende de usted el procesar esos datos y hacer una solicitud ajax con los datos en un argumento GET.

+2

Facebook está volviendo a llamar con ese formato al servidor dev utilizando http: // servername: port/path # access_token = somestring –

+0

Realmente me gustaría que no cerraran esta pregunta. Este fragmento de Facebook es realmente molesto. – Gavin

Cuestiones relacionadas