zoukankan      html  css  js  c++  java
  • node实现jsonp跨域

    1. 搭建node server

    //引入模块

    var http=require("http");

    var fs=require("fs");
    var url = require('url');
    var querystring = require('querystring');

    //创建服务器
    var server=http.createServer();
    server.on("request",function(req,res){
        console.log(req.url.split('?')[1])
        var urlpath=url.parse(req.url).pathname;
        var qs = querystring.parse(req.url.split('?')[1]);//callback=result
        if(urlpath === '/jsonp'){
                    res.writeHead(200,{'Content-Type':'application/json;charset=utf-8'});
                    function isJson(obj){
                        return typeof(obj)=="object"&&Object.prototype.toString.call(obj).toLowerCase()=="[object ]"
                    }
                     fs.readFile("fs.json",function(err,data){
                         if(err){console.log(err)}
                         data=JSON.parse(data);//因为data是buffer要把他变成json
                         data=JSON.stringify(data)
                         var callback = qs.callback+'('+data+');';//callback:test({json})
                        res.end(callback);//res.end参数为buffer或者string
                     })
                }else{
                    res.writeHead(200, {'Content-Type':'text/html;charset=utf-8'});
                    res.end('Hell World ');
                }
    });
    server.listen("3000");
    console.log("server running at localhost:3000");

    前端代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jsonp</title>
    </head>
    <body>
        <div id="box">hahahaha</div>
        <button id="but">click it</button>
        
        <script>
            function test(data){
                                alert(data.name);
                            }
        </script>
        <script src="http://localhost:3000/jsonp?callback=test"></script>

    </body>
    </html>

  • 相关阅读:
    HTML DOM教程 9HTML DOM Window 对象
    HTML DOM教程 11HTML DOM Screen 对象
    Android项目中把bin文件夹里面的.apk文件删除,怎么让它再生成
    Qt把ping www.baidu.com之后的内容的内容输出到一个名为output的文档
    Qt之QProcess 和 c语言对比
    Git的Windows版本Msysgit的中文乱码解决
    多系统 grub之ubuntu的 grub
    QT中调用外部程序:QProcess的使用
    repo的小结
    恢复Ubuntu默认的面板
  • 原文地址:https://www.cnblogs.com/ziqian9206/p/7162087.html
Copyright © 2011-2022 走看看