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

जब आप इस http: // host: 1337/# ए = 1111111 जैसे यूआरएल का अनुरोध करते हैं तो यह केवल सर्वर http: // होस्ट: 1337/और ब्राउज़र के लिए यह खंड भेज रहा है # ए = 1111111 फेसबुक ब्राउजर में यह यूआरएल स्थानीय रूप से लाता है, इसे पार्स करता है और इसे एचटीएमएल: // होस्ट: 1337 /? ए = 11111111 के बाद एक वैरिएबल में बदल देता है फिर AJAX का उपयोग कर डेटा के लिए अनुरोध करता है, सभी डेटा पार्स करता है, और इसे लिखता है ब्राउज़र। यह एक पुरानी तकनीक है जिसके लिए 'ऑनशैशचेंज' ईवेंट की आवश्यकता होती है, वर्तमान में, ऐसा करने का सबसे अच्छा तरीका पुशस्टेट को लागू करना और पृष्ठ को रीफ्रेश किए बिना पूरे यूआरएल को बदलना है। – neojp

उत्तर

19

'#' चिह्न के बाद URL के भाग के साथ यूआरएल NodeJS, fragment कहा जाता है, सर्वर को नहीं भेजा है। यदि आप खंड में डेटा संग्रहीत करते हैं, तो उस डेटा को संसाधित करने के लिए आप पर निर्भर है और जीईटी तर्क में डेटा के साथ AJAX अनुरोध करें।

+2

फेसबुक http: // servername: port/path # access_token = somestring –

+0

का उपयोग कर देव सर्वर पर उस प्रारूप के साथ वापस कॉल कर रहा है, मैं वास्तव में चाहता हूं कि उन्होंने इस प्रश्न को बंद नहीं किया है। यह फेसबुक खंड वास्तव में कष्टप्रद है। – Gavin