原生JS实现Ajax跨域请求flask响应内容


Posted in Javascript onOctober 24, 2017

Ajax方法好,网站感觉跟高大上,但由于Js的局限,跨域Ajax无法实现,这里,讲一下解决办法,前提是需要能够自己可以控制flask端的响应。

主要技术:

修改服务器相应的相应头,使其可以相应任意域名。and设置响应头,使其能够相应POST方法。

实现代码:

这里先放flask代码:

from flask import make_response
@app.route('/test',methods=['get','post'])
def Test():
 if request.method=='GET':
  rst = make_response('aaa')
  rst.headers['Access-Control-Allow-Origin'] = '*' #任意域名
  return rst
 else:
  rst = make_response('bbb')
  rst.headers['Access-Control-Allow-Origin'] = '*'
  rst.headers['Access-Control-Allow-Methods'] = 'POST' #响应POST
  return rst

html测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<span id="ss">test get</span>
<button onclick="getAjax()">click</button>

 <p id="time">test post</p>
 <input type="submit" value="click" onclick="getPostAjax()">


<script>
 function getPostAjax() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange=function () {
   if(xmlhttp.readyState=4 && xmlhttp.status ==200 ) {
    document.getElementById("time").innerText = xmlhttp.responseText;
   }
  }

  xmlhttp.open("POST","http://localhost:5000/test",true);
  xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  #这句话可以发送post数据,没有此句post的内容无法传递
  xmlhttp.send();


 }

 function getAjax() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange=function () {
   if(xmlhttp.readyState==4 && xmlhttp.status == 200){
    document.getElementById("ss").innerHTML=xmlhttp.responseText;
   }
  }
  xmlhttp.open("GET","http://localhost:5000/test",true);
  xmlhttp.send();
 }
</script>
</body>
</html>

无法控制响应头

对于这种情况,get请求可以使用jquery完成,post,无能为力。目前前后端均我一人编写,暂不考虑虑此情况。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
Oct 10 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
详解用node编写自己的cli工具
May 23 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
JavaScript代码调试方法实例小结
Jan 05 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
Apr 17 Javascript
Electron 调用命令行(cmd)
Sep 23 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 #Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 #Javascript
基于js中this和event 的区别(详解)
Oct 24 #Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 #Javascript
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 #jQuery
通俗易懂地解释JS中的闭包
Oct 23 #Javascript
AngularJS 教程及实例代码
Oct 23 #Javascript
You might like
中东人咖啡哲学
2021/03/03 咖啡文化
PHP&amp;MYSQL服务器配置说明
2006/10/09 PHP
很实用的一个完整email发送程序
2006/10/09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
javascript中new关键字详解
2015/12/14 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
电信专业应届生自荐信
2013/09/28 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
1亿有多大教学反思
2014/05/01 职场文书
药剂专业求职信
2014/06/20 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
个人党性锻炼总结
2015/03/05 职场文书
求职意向书范本
2015/05/11 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python