跨域请求方式,jsonp,cors,ajax

4 篇文章 0 订阅

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现
请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.
端口不一样就说明跨域了被拦截了,

说明他不是同源,被拦截了
方法一: get 和post 请求都支持
cors 跨域资源共享:
pip install django-cors-headers 0.1
在setting 里面配置:
CORS_ORIGIN_ALLOW_ALL = True
‘corsheaders.middleware.CorsMiddleware’,
‘corsheaders’,
方法二:
在 views 视图添加一行代码:
response[“Access-Control-Allow-Origin”] = “*”
方法三 jsonp 仅支持get 请求
get_info = request.GET
callback = get_info.get(‘callback’)
if get_info.has_key(‘callback’):
print ‘=========’
return HttpResponse(callback+"("+data+")",mimetype=‘application/javascript’)
下面给一个post 的请求的demo
1 创建两个django 项目,一个是ajax 请求api

index.html :

调用api 的api

跨域请求是为了解决同源策略

出现这种问题,需要跨域请求。
jsonp 是json 用来的跨域的东西

浏览器跨域请求–> jsonp (跨域 get)
假设返回给客户端的数据是 {“a”:111, “b”:234}
正常请求:
http://a.gongchang.com/getlist/
返回的数据是 {“a”:111, “b”:234}

跨域请求:
http://a.gongchang.com/getlist?callback=dosomething
返回的数据是 dosomething({“a”:111, “b”:234})

跨域请求必须有一个参数 callback
在 服务器端 获取 callback,并将需要传递的值以 callback(值) 的形式返回给客户端

因为要返回给客户端的是 cookies 中的值,所以先判断是否存在该 cookie,不存在则返回空串;存在的话,将该键值对 json 序列化。
返回时,判断是否是跨域请求 ,不是跨域请求,则正常返回数据;跨域请求则需要加上 callback,并将所要返回的值用小括号括起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓶瓶罐罐的

如果帮助到你了,请来点实际的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值