zoukankan      html  css  js  c++  java
  • Python全栈之路-Django(十七)

    1 JSONP原理剖析

    解决浏览器对ajax存在同源策略,但是对script的src属性不限制

    开发需求:向其他网站发送Http请求获取数据

    • 浏览器直接发送请求(考虑同源)
    • 服务器代替用户发送请求(不考虑同源)

    1.1 JSONP要求:

    • 客户端
    URL?callback=xxx
    function xxx(arg){}
    
    • 服务端
    获取funcname = request.GET.get(callback)
    返回funcname(...)
    

    1.2 JSONP使用

    1.自己写动态创建script

    function getUsers(){
    	 var tag = document.createElement('script');
        tag.src = 'http://www.s4.com:8001/users/?callback=list';
        document.head.appendChild(tag);
    }
    

    2.jQuery

    $.ajax({
    	url: 'http://www.s4.com:8001/users/',
    	type: 'GET',
    	dataType: 'JSONP',
    	jsonp: 'funcname',
    	jsonpCallback: 'bbb'
    })
    

    1.3 JSONP总结

    • 只能发GET请求
    • 约定

    JSONP是一种方式,目的解决跨域问题

    2 CORS

    简单请求:

    def new_users(request):
    	obj = HttpResponse('返回内容')
    	obj['Access-Control-Allow-Origin'] = "*"
    	return obj
    

    复杂请求:

    def new_users(request):
    
    	if request.method == "OPTIONS":
    		obj = HttpResponse()
    		obj['Access-Control-Allow-Origin'] = "*"
    		obj['Access-Control-Allow-Methods'] = "DELETE"
    		return obj
    
    	obj = HttpResponse('asdfasdf')
    	obj['Access-Control-Allow-Origin'] = "*"
    	return obj
    

    其他:CORS可以处理任何请求,JSONP只能处理GET请求

  • 相关阅读:
    Linux tomcat 去除项目名端口号直接用ip或者域名访问网站
    Linux SSH 安装Tomcat
    Linux SSH下安装Java并设置环境
    自己把jar包添加到maven仓库中
    eclipse 导入maven项目
    将eclipse左边目录结构改为 树形结构
    htt p第一章概述
    Markdown编辑器 简单使用
    CSS 盒子模型
    CSS 基本样式
  • 原文地址:https://www.cnblogs.com/wanyuetian/p/7157787.html
Copyright © 2011-2022 走看看