JSONP产生背景
1.跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的。
2.浏览器的同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。
3.如果协议,端口和主机对于两个页面是相同的,则两个页面具有相同的源,否则就是不同源的。
4.如果要在js里发起跨域请求,则要进行一些特殊处理了。或者,你可以把请求发到自己的服务端,再通过后台代码发起请求,再将数据返回前端。也可以通过我们今天讲解的JSONP方式在前端页面进行请求。
环境:
python3.7
django2.x
例子
1.通过后台服务端进行对其他域的请求:
urls.py
1 from django.contrib import admin 2 from django.urls import path,re_path,include 4 from app02 import views as views2 5 6 urlpatterns = [ 7 path('admin/', admin.site.urls), 8 path("req/",views2.req) 9 ]
views.py
1 from django.shortcuts import render 2 import requests 3 # Create your views here. 4 def req(request): 5 response = requests.get("http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=14543768704003") 6 response.content # 字节类型的 7 response.encoding = 'utf-8' 8 print(response.text) #字符串类型 9 return render(request,'req.html',{"result":response.text})
req.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>后台获取结果</h1> {{ result }} </body> </html>