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 remove 自定义数组删除方法
Oct 20 Javascript
一个简单的jquery的多选下拉框(自写)
May 05 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
js获取form的方法
May 06 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
全面接触神奇的Bootstrap导航条实战篇
Aug 01 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
jQuery zTree插件快速实现目录树
Aug 16 jQuery
JS实现的碰撞检测与周期移动完整示例
Sep 02 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版)
2006/10/09 PHP
杏林同学录(九)
2006/10/09 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
javascript 精粹笔记
2010/05/09 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
vue实现文件上传功能
2018/08/13 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
js实现简单图片拖拽效果
2021/02/22 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
python中format()函数的简单使用教程
2018/03/14 Python
python实现共轭梯度法
2019/07/03 Python
NumPy中的维度Axis详解
2019/11/26 Python
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
美德好少年主要事迹
2014/01/29 职场文书
政府四风问题整改措施
2014/10/04 职场文书
保安辞职信范文
2015/02/28 职场文书
中秋联欢会主持词
2015/07/04 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
企业愿景口号
2015/12/25 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书