jsonp跨站请求
本地端
url:
url(r'req/',a2.req),
commons.js
alert(123);
views.py
from django.shortcuts import render
import requests
# Create your views here.
def req(request):
response=requests.get('http://www.weather.com.cn/data/cityinfo/101010100.html')
print(response.content) #字节类型
response.encoding='utf-8'
print(response.text) #字符串类型
print(response.cookies,response.headers,)
return render(request,'req.html',{'result':response.text})
本地前端
req.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{# <script src="/static/commons.js"></script>#}
{# <script src='http://127.0.0.1:8001/jsonp/?k1=v1&k2=v2'></script>#}
{# <script src="https://cdn.bootcss.com/jquery/3.4.1/core.js"></script>#}
</head>
<body>
<h1>后台获取的结果</h1>
{{ result }}
<h1>js直接获取结果</h1>
<input type="button" value="获取数据" onclick="getContent();">
<div id="container_1"></div>
<script src="/static/jquery-1.12.4.js"></script>
<script>
function getContent() {
/*
var xhr=new XMLHttpRequest();
{# xhr.open("GET",'http://www.weather.com.cn/data/cityinfo/101010100.html')#}
xhr.open("GET",'http://127.0.0.1:8001/jsonp.html?k1=v1&k2=v2');
xhr.onreadystatechange=function () {
console.log(xhr.responseText);//拿到返回的文本信息
};
xhr.send()
*/
/*
var tag=document.createElement('script');
{# tag.src='http://127.0.0.1:8001/jsonp/?callback=pe&k1=v1&k2=v2';#}
tag.src='http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403';
document.head.appendChild(tag);
document.head.removeChild(tag);
}
function list(arg) {
console.log(arg);
}
*/
$.ajax({
url:'http://www.jxntv.cn/data/jmd-jxtv2.html?_=1454376870403',
type:'POST',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'list'
});
}
function list(arg) {
console.log(arg);
}
</script>
</body>
</html>
远程端
url
url(r'jsonp/',views.jsonp),
views.py
def jsonp(request):
func=request.GET.get('callback')
content='%s(1000)'%(func,)
return HttpResponse(content)
# print(request.GET)
# return HttpResponse('alert("21")')
笔记:
由于浏览器具有同源策略(阻止ajax请求,无法阻止<script src='---'></script>)
要取外面网站数据怎么办:
--创建script标签
--src=远程地址
--远程地址返回的内容能拿到 必须符合javacript格式
以?号浏览器url获取是get方式获取数据
jsonp只能发get请求
jsonp跨站请求的更多相关文章
- 详解 JSONP跨域请求的实现
跨域问题是由于浏览器为了防止CSRF攻击(Cross-site request forgery跨站请求伪造),避免恶意攻击而带来的风险而采取的同源策略限制.当一个页面中使用XMLHTTPR ...
- CSRF 跨站请求伪造学习笔记
参考文章: 漏洞挖掘之CSRF CSRF花式绕过Referer技巧 What-是什么 CSRF(Cross-site request forgery)跨站请求伪造.攻击者通过构造特殊链接或者页面,盗用 ...
- Web安全相关(二):跨站请求伪造(CSRF/XSRF)
简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...
- 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
- 跨站请求伪造 CSRF / XSRF<一:介绍>
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一 ...
- web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入
web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...
- csrf跨站请求伪造
如何杜绝跨站请求伪造? 1.要让服务器知道本次请求是不是冒用了用户的身份→ 2.服务器发给用户一个凭证,用户请求时需携带此凭证→ 3.此凭证只能用户看到而且冒用者看不到→ 4.这就用到了浏览器的安全机 ...
- Web安全测试之跨站请求伪造(CSRF)篇
跨站请求伪造(即CSRF)被Web安全界称为诸多漏洞中“沉睡的巨人”,其威胁程度由此“美誉”便可见一斑.本文将简单介绍该漏洞,并详细说明造成这种漏洞的原因所在,以及针对该漏洞的黑盒测试与灰盒子测试具体 ...
- django的跨站请求访问
一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...
- .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器
1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...
随机推荐
- Linux 提升CPU利用率
由于同学项目CPU利用率不高,客户要降他们服务器配置,所以下下策. # 提升一个核CPU利用率 cat /dev/urandom | gzip -9 > /dev/null # 提升更大的CPU ...
- 深入解析:Jupyter Notebook 中魔法命令的使用技巧与应用
Jupyter Notebook 中的魔法命令为用户提供了诸多便利功能.魔法命令主要分为行魔法(Line magic)和单元魔法(Cell magic),行魔法前缀为"%",单元魔 ...
- Easyexcel(1-注解使用)
版本依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</a ...
- tsconfig.json 报错问题解决
tsconfig.json 报错问题解决 报错如图所示: 创建tsconfig.json配置文件时,VSCode会自动检测当前项目当中是否有ts文件,若没有则报错,提示用户需要创建一个ts文件后,再去 ...
- helm install 从多种源进行安装
Helm 提供了多种方法来从不同的源安装 charts.以下是一些常见的安装方法: Helm官方仓库 从 Helm 官方仓库(Helm Hub)安装:Helm Hub 是 Helm 官方维护的一个公共 ...
- golang interface 转 string、int、float64
interface{} interface{} 接口.interface{} 类型很多人都会混淆.interface{} 类型是没有方法的接口.由于没有 implements 关键字,所以说所有的类型 ...
- 利用Windows自带性能计数器分析软件产品的性能瓶颈(转)
利用Windows性能计数器分析软件产品的性能瓶颈转自:http://blog.163.com/jack_test/blog/static/166620663201061594459936/ [摘要] ...
- Redis 是什么?
Redis 的定义? 百度百科: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.K ...
- AI+Web3:张三的未来机会地图
热点风暴:ETHDenver 2025掀起热潮 滑动微信的那一刻,张三愣住了.热搜上,ETHDenver大会简直是技术圈的春晚.AI和Web3,这两个曾经高高在上的概念,突然变得触手可及.大会透露的一 ...
- Oracle 11G R2 安装图解
个人学习需要,在Windows Server 2008 R2 上安装 Oracle 11G R2 Tips:需要下载2个文件,file1和file2 解压后需要合并到同一个文件夹下才能正常安装(这里就 ...