解决浏览器对ajax存在同源策略,可是对script的src属性不限制ajax
开发需求:向其余网站发送Http请求获取数据json
URL?callback=xxx function xxx(arg){}
获取funcname = request.GET.get(callback) 返回funcname(...)
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' })
JSONP是一种方式,目的解决跨域问题服务器
简单请求:app
def new_users(request): obj = HttpResponse('返回内容') obj['Access-Control-Allow-Origin'] = "*" return obj
复杂请求:cors
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请求jsonp