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 相关文章推荐
javascript 日历提醒系统( 兼容所有浏览器 )
Apr 07 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
JQuery标签页效果的两个实例讲解(4)
Sep 17 Javascript
Angularjs分页查询的实现
Feb 24 Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 Javascript
详解vue2路由vue-router配置(懒加载)
Apr 08 Javascript
微信小程序radio组件使用详解
Jan 31 Javascript
AngularJS select加载数据选中默认值的方法
Feb 28 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
高效jQuery选择器的5个技巧实例分析
Nov 26 jQuery
js不常见操作运算符总结
Nov 20 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中call_user_func_array的作用
2013/06/07 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
百度地图API使用方法详解
2015/08/25 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
js实现简单页面全屏
2019/09/17 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
Python的print用法示例
2014/02/11 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python如何将多个PDF进行合并
2019/08/13 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
九州传奇上机题
2014/07/10 面试题
数控技术与应用毕业生自荐信
2013/09/24 职场文书
主管职责范文
2013/11/09 职场文书
采购员岗位职责
2013/11/15 职场文书
医药个人求职信范文
2014/01/29 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
新学期主题班会
2015/08/17 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js