解決瀏覽器對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