原生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 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
jQuery xml字符串的解析、读取及查找方法
Mar 01 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
关于vue.js发布后路径引用的问题解决
Aug 15 Javascript
Vue 2.0入门基础知识之内部指令详解
Oct 15 Javascript
JS如何实现动态添加的元素绑定事件
Nov 12 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
Aug 06 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 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 时间计算问题小结
2009/01/04 PHP
php数据库备份还原类分享
2014/03/20 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
js查找节点的方法小结
2015/01/13 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
详解python里的命名规范
2018/07/16 Python
解决python线程卡死的问题
2019/02/18 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
Pandas分组与排序的实现
2019/07/23 Python
python求前n个阶乘的和实例
2020/04/02 Python
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
十佳青年个人事迹材料
2014/01/28 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
表彰会主持词
2014/03/26 职场文书
公司经理任命书
2014/06/05 职场文书
爱护花草树木的标语
2014/06/11 职场文书
公司授权委托书范本
2014/09/18 职场文书
2014年英语工作总结
2014/12/20 职场文书
被告代理词范文
2015/05/25 职场文书
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL
Go语言编译原理之变量捕获
2022/08/05 Golang