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 相关文章推荐
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
Oct 13 Javascript
浅谈JavaScript的自动垃圾收集机制
Dec 15 Javascript
bootstrap选项卡使用方法解析
Jan 11 Javascript
vue的diff算法知识点总结
Mar 29 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 jQuery
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
Nov 05 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 split汉字
2009/06/05 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
基于jquery的时间段实现代码
2012/08/02 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
python如何求圆的面积
2020/07/01 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
大学生期末自我鉴定
2014/02/01 职场文书
承诺书怎么写
2014/03/26 职场文书
小学生家长寄语
2014/04/02 职场文书
家长通知书家长评语
2014/04/17 职场文书
数据保密承诺书
2014/06/03 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
Python中tqdm的使用和例子
2022/09/23 Python