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 相关文章推荐
8个超实用的jQuery功能代码分享
Jan 08 Javascript
jquery图片滚动放大代码分享(2)
Aug 28 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
阿里大于短信验证码node koa2的实现代码(最新)
Sep 07 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 Javascript
前端面试知识点目录一览
Apr 15 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
Jun 07 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笔记之常用文件操作
2010/10/12 PHP
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
php输入数据统一类实例
2015/02/23 PHP
php检测url是否存在的方法
2015/04/14 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
python实现批量转换图片为黑白
2020/06/16 Python
python MD5加密的示例
2020/10/19 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
应聘自荐信
2013/12/14 职场文书
大学生个人事迹材料
2014/01/21 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
公司新年寄语
2014/04/04 职场文书
复试通知单模板
2015/04/24 职场文书
git中cherry-pick命令的使用教程
2022/06/25 Servers