博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之jsonp跨域请求原理
阅读量:6261 次
发布时间:2019-06-22

本文共 1507 字,大约阅读时间需要 5 分钟。

在进行网站开发的过程中经常会用到第三方的数据,但是由于同源策略的限制导致ajax不能发送请求,因此也无法获得数据。解决ajax的跨域问题有两种方法:

  一、jsonp  

  二、XMLHttpRequest2中可以配合服务端来解决,在响应头中加入Access-Control-Allow-Origin:*

1、同源:

  同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口号完全相同

  1.1目的:保护用户信息安全
  1.2限制:cookie、localStorage和IndexDB无法读取
  无法操作跨域的iframe里的dom元素
  ajax请求不能发送

 2、跨域:

不同源则为跨域

http://api.example.com/detail.html  不同源 域名不同  2      https//www.example.com/detail.html   不同源 协议不同  3      http://www.example.com:8080/detail.html    不同源    端口不同  4      http://api.example.com:8080/detail.html    不同源    域名、端口不同  5      https://api.example.com/detail.html    不同源    协议、域名不同  6      https://www.example.com:8080/detail.html    不同源    端口、协议不同  7      http://www.example.com/detail/index.html    同源    只是目录不同

3、jsonp原理:

其本质是利用了标签具有可跨域的特性,由服务端返回预先定义好的javascript函数的调用,并且将服务端数据以该函数参数的形式传递过来

4、案例

views.pyfrom django.shortcuts import renderimport requestsdef jsonp(request):    response = requests.get('http://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101121301')   #通过这个天气的API接口获得天气信息    #print(response.content) # 字节    response.encoding = 'utf-8'  #将其转化为中文字符    #print(response.text)    # 字符串    return render(request,'jsonp.html',{
'result': response.text}) #向前端发送result
urls.pyfrom app01 import viewsfrom django.contrib.staticfiles.ursfrom django.urls import pathurlpatterns = [    path('jsonp/', views.jsonp),]
jsonp.html    
Title

后台获取的结果

{
{ result }}

js直接获取结果

案例前端结果:

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9163567.html

你可能感兴趣的文章
从GIMP的Retinex算法里发现了一种高斯模糊的快速实现方法【开发记录】。
查看>>
c编写程序完成m名旅客和n辆汽车的同步程序代写
查看>>
oracle与sqlserver区别
查看>>
hdu4722之简单数位dp
查看>>
Android Fragment 学习<四>
查看>>
js 控制图片大小核心讲解
查看>>
从零开始编写自己的C#框架(2)——开发前准备工作
查看>>
装机 win7 64 IE11
查看>>
约瑟夫环问题
查看>>
五子棋
查看>>
和为S的连续正数序列
查看>>
三周的 软件工程实践课 课程安排建议
查看>>
解决冲突-git入门教程
查看>>
修改ssh端口后无法连接ssh了?
查看>>
[android] 隐式意图的配置
查看>>
HQL: Hibernate查询语言
查看>>
SQL优化之六脉神剑
查看>>
java生成随机字符串uuid
查看>>
黄永成-thinkphp讲解-个人博客讲解26集
查看>>
Mongodb(2)创建数据库,删除数据库,创建集合,删除集合,显示文档内容
查看>>