原生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 相关文章推荐
WEB 浏览器兼容 推荐收藏
May 14 Javascript
写给想学习Javascript的朋友一点学习经验小结
Nov 23 Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
js异常捕获方法介绍
Apr 10 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
Aug 23 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
基于VUE实现的九宫格抽奖功能
Sep 30 Javascript
解决layui动态加载复选框无法选中的问题
Sep 20 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
PHP图片上传代码
2013/11/04 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
php开发工具有哪五款
2015/11/09 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
使用javascript插入样式
2016/03/14 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Python自动抢红包教程详解
2019/06/11 Python
Python实现TCP通信的示例代码
2019/09/09 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
大学本科毕业生的自我鉴定
2013/11/26 职场文书
秘书英文求职信
2014/04/16 职场文书
2014年超市工作总结
2014/11/19 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL