常用实现跨域的方法

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

所谓同源是指,域名,协议,端口相同。浏览器执行javascript脚本时,会检查这个脚本属于那个页面,如果不是同源页面,就不会被执行。

同源策略的目的,是防止黑客做一些做奸犯科的勾当。

常用的跨域的方法

  • 使用iFrame访问另一个域。 然后再从另一个页面读取iFrame的内容
  • jsonp。需要服务器支持。使用script src动态得到一段java代码。是回调页面上的js函数,参数是一个json对象。
  • 设置http头,Access-Control-Allow-Origin:*  但据说IE有一些版本不识别这个http头。
  • 服务器代理。如,服务器写一个url的处理action。其参数是一个url。这个服务器会用参数拼凑一个url,用httpclient库去执行url,然后把读取的内容再输出到http客户端。

nginx反向代理实现跨域

用nginx反向代理实现跨域,是最简单的跨域方式。只需要修改nginx的配置即可解决跨域问题,支持所有浏览器,支持session,不需要修改任何代码,并且不会影响服务器性能

只需要配置nginx,在一个服务器上配置多个前缀来转发http/https请求到多个真实的服务器即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSONP 是一种解决跨域问题的常用方法,它利用了 script 标签不受同源策略限制的特性。具体实现方法如下: 1. 服务器端需要提供一个回调函数,该函数的名称由客户端通过 URL 参数传递。 2. 客户端通过动态创建 script 标签的方式向服务器发送请求,并传递回调函数名称作为 URL 参数。 3. 服务器端将返回的数据包装在回调函数中,并将其作为 JavaScript 代码返回给客户端。 4. 客户端接收到响应后,会自动执行回调函数,从而获取到服务器返回的数据。 以下是一个使用 JSONP 解决跨域问题的示例: 服务端代码(假设回调函数名称为callback): ```python import json def jsonp(request): data = { 'name': '张三', 'age': 20, 'gender': '男' } callback = request.GET.get('callback') response_data = json.dumps(data) response = f"{callback}({response_data})" return HttpResponse(response, content_type='application/javascript') ``` 客户端代码: ```javascript function jsonp(url, callback) { const script = document.createElement('script'); script.src = `${url}&callback=${callback}`; document.body.appendChild(script); } function callback(data) { console.log(data); } jsonp('http://example.com/jsonp', 'callback'); ``` 在上面的示例中,客户端调用 jsonp 函数时,会向 http://example.com/jsonp 发送一个跨域请求,并指定回调函数名称为 callback。服务端返回的数据会被包裹在 callback 函数中,并以 JavaScript 代码的形式返回给客户端。客户端接收到响应后,会自动执行 callback 函数,从而获取到服务器返回的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值