admin管理员组文章数量:1122852
ajax的跨域请求实现,Ajax
跨域
跨域名访问,如c1域名向c2域名发送请求
本质:浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性。
django服务端准备
url.py:
from django.conf.urls import url
from hello import views
urlpatterns = [
url(r\'cors/\', views.cors, name=\'cors\'),
url(r\'jsonp/\', views.jsonp, name=\'jsonp\'),
]
views.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def cors(request):
n1 = request.POST.get(\'n1\')
n2 = request.POST.get(\'n2\')
result = int(n1) + int(n2)
response = HttpResponse(result)
response[\'Access-Control-Allow-Origin\'] = "*"
return response
@csrf_exempt
def jsonp(request):
func_name = request.GET.get(\'callback\')
n1 = request.GET.get(\'n1\')
n2 = request.GET.get(\'n2\')
result = int(n1) + int(n2)
temp = "%s(%s)" % (func_name, result)
response = HttpResponse(temp)
return response
实现Ajax跨域请求
a.跨域资源共享(CORS,Cross-Origin Resource Sharing)
执行流程:
服务端
- 设置响应头
客户端
- XmlHttpRequest 直接发送请求
cors.html:
跨域请求跨域请求
//客户端定义回调函数
functioncall(arg) {
console.log(\'客户端定义回调函数执行:\', arg);
}functionXmlSendRequest() {//创建script标签
vartag=document.createElement(\'script\');//指定src
tag.src= "http://localhost:8000/jsonp/?callback=call&n1=2&n2=4";//添加到head标签中
document.head.appendChild(tag);//删除script标签
document.head.removeChild(tag);
}functionJqSendRequest_1() {
$.ajax({
url:"http://localhost:8000/jsonp/",
data: {\'n1\':22,\'n2\':44},
type:\'POST\',//虽然是POST方式,但是内部会转换成GET请求
dataType:\'jsonp\',
success:function(data, statusText, xmlHttpRequest) {
console.log(\'success 回调执行:\', data);
}
})
}functionJqSendRequest_2() {
$.ajax({
url:"http://localhost:8000/jsonp/",
data: {\'n1\':222,\'n2\':444},
type:\'GET\',//POST 也会自动转换为GET请求
dataType:\'jsonp\',
jsonp:"callback",
jsonpCallback:\'call\',//请求成功返回后,客户端执行call函数
success:function(data, statusText, xmlHttpRequest) {//未指定jsonCallback时,则自定执行方法
console.log(\'success 回调执行:\', data);
}//如上请求如 http://localhost:8000/jsonp/?callback=call&n1=222&n2=444
})
}
本文标签: ajax的跨域请求实现Ajax
版权声明:本文标题:ajax的跨域请求实现,Ajax 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1707387759a728123.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论