原生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 相关文章推荐
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
Sep 05 Javascript
深入浅析Vue组件开发
Nov 25 Javascript
vue-cli如何快速构建vue项目
Apr 26 Javascript
javascript实现QQ空间相册展示源码
Dec 12 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
Dec 10 Javascript
微信小程序select下拉框实现效果
May 15 Javascript
简介JavaScript错误处理机制
Aug 04 Javascript
微信小程序使用前置摄像头拍照
Oct 22 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
Smarty Foreach 使用说明
2010/03/23 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python 多线程实例详解
2017/03/25 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
数据库专业英语
2012/11/30 面试题
Python如何定义一个函数
2015/09/01 面试题
事业单位请假制度
2014/01/13 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
中学生思想品德评语
2014/12/31 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年消防工作总结
2015/04/24 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python
Elasticsearch 批量操作
2022/04/19 Python