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的下拉框改变动态添加和删除表格实现代码
Sep 12 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
May 07 Javascript
JS实现按钮颜色切换效果
Sep 05 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
Jan 27 Javascript
JS Object构造函数之Object.freeze
Apr 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
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
php实现登陆模块功能示例
2016/10/20 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Python求出0~100以内的所有素数
2018/01/23 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
2014年会演讲稿范文
2014/01/06 职场文书
大课间活动制度
2014/01/18 职场文书
学生思想表现的评语
2014/01/30 职场文书
家长给小学生的评语
2014/01/30 职场文书
市级文明单位申报材料
2014/05/07 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
质检员工作总结2015
2015/04/25 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书