karma

2012-04-01 32 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

Bu gibi bir URL isteğinde bulunduğunuzda: http: // host: 1337/# A = 1111111 sadece bu sunucuyu http: // host: 1337/ve bu parçayı tarayıcıya gönderir # A = 1111111 Facebook bu URL'yi tarayıcıda yerel olarak getirir, ayrıştırır ve bu http: // host: 1337 /? A = 11111111 gibi bir get değişkeni olarak değiştirir ve ardından AJAX kullanarak veri ister, tüm verileri ayrıştırır ve tarayıcı. Bu 'onhashchange' olayını gerektiren eski bir tekniktir, şu anda bunu yapmanın en iyi yolu pushState'i uygulamak ve sayfayı yenilemeden tüm URL'yi değiştirmek. – neojp

cevap

19

'#' işaretinden sonra URL'nin parçası ile url nodejs, fragment denilen, sunucuya gönderilmez. Verileri parçada depolarsanız, bu verileri işlemek ve bir GET argümanındaki verilerle bir ajax isteği yapmak size kalmıştır.

+2

Facebook, http: // servername: port/path # access_token = somestring –

+0

kullanarak devasa sunucuya bu biçimi geri çağırıyor. Bu facebook parçası gerçekten sinir bozucu. – Gavin