原生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 相关文章推荐
一个加密JavaScript的开源工具PACKER2.0.2
Nov 04 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
用json方式实现在 js 中建立一个map
May 02 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 Javascript
JQuery为元素添加样式的实现方法
Jul 20 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 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下intval()和(int)转换使用与区别
2008/07/18 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
深入php内核之php in array
2015/11/10 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
什么是数组名
2012/05/10 面试题
2016年学校招生广告语
2016/01/28 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL