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调试系列 控制台命令行API使用方法
Jun 18 Javascript
js 实现的可折叠留言板(附源码下载)
Jul 01 Javascript
JavaScript设置body高度为浏览器高度的方法
Feb 09 Javascript
JS获取表格内指定单元格html内容的方法
Mar 31 Javascript
认识Knockout及如何使用Knockout绑定上下文
Dec 25 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
详解js的六大数据类型
Dec 27 Javascript
详解JS中的attribute属性
Apr 25 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
Oct 16 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
ant design vue datepicker日期选择器中文化操作
Oct 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自动生成后台导航网址的最佳方法
2013/08/27 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
php生成rss类用法实例
2015/04/14 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
老生常谈js数据类型
2017/08/03 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Python赋值语句后逗号的作用分析
2015/06/08 Python
spyder常用快捷键(分享)
2017/07/19 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
三个python爬虫项目实例代码
2019/12/28 Python
Python enumerate内置库用法解析
2020/02/24 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
保护黄河倡议书
2014/05/16 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
python manim实现排序算法动画示例
2022/08/14 Python