node跨域请求方法小结


Posted in Javascript onAugust 25, 2017

本文介绍了node跨域请求,主要介绍了两种方法,一种是jsonp,另一种res.wirteHead,具体如下:

第一种:jsonp

参看用nodejs实现json和jsonp服务

第二种:res.wirteHead

node部分

var http = require('http')
var url = require('url')
var querystring = require('querystring')

var port = 9000
var jsonData = { 'name': 'xiaohong', 'job': 'daboss' }
http.createServer(function (req, res) {
  // var pathStr = url.parse(req.url)
    res.writeHead(200, {
    'Content-Type': 'application/json;charset=utf-8',
    'Access-Control-Allow-Credentials': true,
    'Access-Control-Allow-Origin': '*'
  })
  var type = req.method;
  if (type == 'GET') {
   
    res.end(JSON.stringify(jsonData))
  } else if (type == 'POST') {
    var str = '';
    req.on('data',function(chunk){
      str += chunk;
    })
    
    req.on('end',function(){
      var data = querystring.parse(str)
      console.log(data)
      if(data.name == "" || data.job == ""){
        res.end(JSON.stringify({'success':true,msg:'填写有误'}))
      }else{
        res.end(JSON.stringify({'success':false,msg:'添加成功'}))
      }

    })
  }

}).listen(port, function () {
  console.log('server is runing at port ' + port)
})

重点部分是添加响应头信息

res.writeHead(200, {
    'Content-Type': 'application/json;charset=utf-8',
    'Access-Control-Allow-Credentials': true,
    'Access-Control-Allow-Origin': '*' //可以是*,也可以是跨域的地址
  })

ajax里不需要做任何特殊处理

dataType仍旧是json

html部分

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <a class="click" href="javascript:get_jsonp()" rel="external nofollow" >click me</a>
  <p class="result"></p>
  <label>姓名:</label>
  <input class="name" type="text" />
  <label>职位:</label>
  <input class="job" type="text">
  <a class="add" href = "javascript:add()">添加</a>
  <p class="msg"></p>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
    function get_jsonp() {
      $.ajax({
        type: 'get',
        dataType: 'json',
        url: 'http://localhost:9000',
        success: function (data) {
          $('.result').html('my name is ' + data.name)
        },
        error: function (err) {
          $('.result').html('出错了 ' + err.status)
        }
      })
    }
    function add(){
      $.ajax({
        type:'post',
        url:'http://localhost:9000',
        dataType:'json',
        data:{
          'name':$(".name").val(),
          'job':$(".job").val()
        },
        success:function(data){
          $('.msg').html(data.msg)
        },
        error:function(err){
          
           $('.msg').html('出错了'+err.status)
        }
      })
    }
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript之更有效率的字符串替换
Aug 02 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
使用console进行性能测试
Apr 27 Javascript
JS组件Bootstrap Table使用实例分享
May 30 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
微信小程序商品详情页的底部弹出框效果
Nov 16 Javascript
JS 验证码功能的三种实现方式
Nov 26 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
深入webpack打包原理及loader和plugin的实现
May 06 Javascript
AngularJS中filter的使用实例详解
Aug 25 #Javascript
微信小程序实现表单校验功能
Mar 30 #Javascript
Angularjs中ng-repeat的简单实例
Aug 25 #Javascript
微信小程序页面滑动屏幕加载数据效果
Nov 16 #Javascript
Angularjs中数据绑定的实例详解
Aug 25 #Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 #Javascript
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 #Javascript
You might like
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python实现学校管理系统
2018/01/11 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
工程班组长岗位职责
2013/12/30 职场文书
五型班组建设方案
2014/02/10 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书