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 相关文章推荐
JQuery开发的数独游戏代码
Oct 29 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
jQuery Ajax 实例全解析
Apr 20 Javascript
js子页面获取父页面数据示例
May 15 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
Aug 05 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
vue-resourse将json数据输出实例
Mar 08 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
JavaScript方法_动力节点Java学院整理
Jun 28 Javascript
移动前端图片压缩上传的实例
Dec 06 Javascript
Vue实现附件上传功能
May 28 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
php导出excel格式数据问题
2014/03/11 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
Angular路由简单学习
2016/12/26 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
Python接口测试get请求过程详解
2020/02/28 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
大学生求职自荐信
2013/12/12 职场文书
入股协议书范本
2014/04/14 职场文书
社区志愿者培训方案
2014/06/10 职场文书
个人承诺书格式范文
2015/04/29 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
redis 解决库存并发问题实现数量控制
2022/04/08 Redis