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 模拟点击广告
Jan 02 Javascript
jquery入门—访问DOM对象方法
Jan 07 Javascript
javascript面向对象特性代码实例
Jun 12 Javascript
node.js中的fs.utimesSync方法使用说明
Dec 15 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
vue项目前端埋点的实现
Mar 06 Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 Javascript
SSM VUE Axios详解
Oct 05 Vue.js
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 if 想到的些问题
2008/03/22 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python制作数据导入导出工具
2015/07/31 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python自带的http模块详解
2016/11/06 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
简历里的自我评价
2014/01/31 职场文书
同事吵架检讨书
2014/02/05 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
工作证明格式范文
2015/06/15 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL