[英]GET / POST node.js (cross-domain)
我們的服務器已經可以從客戶端接收字符串。
我們希望客戶返回響應並將其顯示在文本區域中。
app.js:
var sys = require ('util'),
url = require('url'),
http = require('http'),
qs = require('querystring');
var stringforfirefox = 'hi man!';
http.createServer(function (req, res) {
if(req.method=='POST') {
var body='';
req.on('data', function (data) {
body +=data;
});
req.on('end',function(){
var POST = qs.parse(body);
console.log(POST);
});
}
else if(req.method=='GET') {
var url_parts = url.parse(req.url,true);
console.log(url_parts.query);
}
}).listen(1337, "127.0.0.1");
為了進行測試,我們使用本地主機的URL。 以后它將是跨域的。 這是網站
index.html:
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>
document.onkeypress = function keypressed(e){
if (e.keyCode == 112) {
httpGet('http://localhost:1337/index77?title=message_for_server') ;
}
if (e.keyCode == 113) {
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("textarea1").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","http://localhost:1337/index77",true);
xmlhttp.send("fname=Henry&lname=Ford");
}
}
function httpGet(theUrl)
{
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send( "fname=Henry&lname=Ford" );
alert( xmlHttp.responseText);
}
</script>
</head>
<body>
<form>
<p>
<textarea id="textarea1" cols="25" rows="25" name="textfeld"></textarea>
</p>
</form>
</body>
</html>
我們想擴展這里的代碼。
您需要發送響應(res)。
if(req.method=='POST') {
var body='';
req.on('data', function (data) {
body +=data;
});
req.on('end',function(){
res.send(200, "The request's body: " + body);
var POST = qs.parse(body);
console.log(POST);
});
出於明顯的安全原因, XMLHttpRequest()
不能用於跨域發布或獲取信息。 在某些瀏覽器上,當您在本地主機環境中時,它可能會起作用,但是從Web啟動站點時,這是不可接受的。
要解決此問題,您必須將AJAX請求提交到同一域,並在服務器端處理跨域操作。
Google新聞RSS Feed等JavaScript工具使用此方法來解決這些安全性障礙。
在這里,客戶端和服務器之間的字符串交換非常有效:
app.js:
var sys = require ('util'),
url = require('url'),
http = require('http'),
qs = require('querystring');
var stringforfirefox = 'hi man!';
http.createServer(function (req, res) {
if(req.method=='GET') {
res.statusCode = 200;
var url_parts = url.parse(req.url,true);
var query = url_parts.query["title"];
console.log(query);
stringforfirefox = 'your input: '+query;
res.end("__stringexchange(" + JSON.stringify( stringforfirefox) + ");");
}
}).listen(1337, "127.0.0.1");
index.html:
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>
function __stringexchange(data) {
document.getElementById('textarea1').value= data;}
document.onkeypress = function keypressed(e){
if (e.keyCode == 112) {
var keyword = document.getElementById('edit1').value ;
var script = document.createElement('script');
script.src = 'http://localhost:1337/?title='+keyword;
document.body.appendChild(script); // triggers a GET request
}
}
</script>
</head>
<body>
<form>
<input id="edit1" type="text" name="keyword"><br>
<br>
<textarea id="textarea1" cols="25" rows="25" name="textfeld"></textarea>
</form>
</body>
</html>
(我們其他問題的代碼組合。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.