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学习笔记 更改jQuery对象
Sep 19 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
Jan 22 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
当前流行的JavaScript代码风格指南
Sep 10 Javascript
javascript中if和switch,==和===详解
Jul 30 Javascript
详解JavaScript中this关键字的用法
May 26 Javascript
使用JavaScript实现弹出层效果的简单实例
May 31 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
分析JS中this引发的bug
Dec 12 Javascript
详解webpack babel的配置
Jan 09 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 jQuery
浅谈javascript错误处理
Aug 11 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
一个查看session内容的函数
2006/10/09 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
基于PHP制作验证码
2016/10/12 PHP
javascript中的作用域scope介绍
2010/12/28 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python获取本机所有IP地址的方法
2018/12/26 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Python 串口读写的实现方法
2019/06/12 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
出生医学证明样本
2014/01/17 职场文书
公司经理聘任书
2014/03/29 职场文书
小组名称和口号
2014/06/09 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
2014司机年终工作总结
2014/12/05 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
超市采购员岗位职责
2015/04/07 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL