跨域问题

1、jsonp:

动态创建一个script标签,src指向要跨域的url;

该接口返回一段js代码:f(data);

在前端代码里写f方法,即可接收返回来的数据。

缺点:只支持get请求;如果调用不成功也不会有回调;返回的js有风险

安全问题解决:我们只需要保证浏览器内不会明文出现<>标签,那么问题便可彻底解决。基本思路是:在服务端做一次urlencode。而在output输出decodeURIComponent(‘#####’)来规避显示尖括号。Urlencode过的字符串,只可能包含字母数字%。

2、代理:

前端调用自己本域接口——》本域接口访问外域接口——》得到返回值再返回给前端

3、CORS跨域资源共享:

在服务器端设置header,允许任何人访问,可指定访问来源和访问方式:

response.setHeader("Access-Control-Allow-Origin","http://localhost:8080");

response.setHeader("Access-Control-Allow-Methods","GET,POST,PUT,OPTIONS");

response.setHeader("Access-Control-Allow-Credentials","true");

4、nginx反向代理跨域:

在客户端的nginx配置反向代理:

如果www.a.com想访问www.b.com/hehe/haha接口,

location /apis{

        rewrite ^.+hehe/?(.*)$ /$1 break;

        include uwsgi_params;

        proxy_pass http://b.com;

}

将会变成请求/apis/haha

5、修改document.domain来跨子域:

首先要区分主域和子域:hehe.com是主域的话,haha.hehe.com是子域,即:

主域名:由两个或两个以上的字母构成,中间由点号隔开,整个域名只有1个点号,子域名:是在主域名之下的域名,域名内容会有多个点号。

例:

在域名为主域名的页面里(即要发送跨域请求的页面),引入一个iframe,src设置为要跨域的子域的一个页面,并设置display:none;设置document.domain=主域名;

在子域的一个页面中,要设置document.domai=主域名;

在主域名页面里即可用该子域名下的url发起请求。

缺点:一旦有子域被攻击,主域名也会被影响。安全性差。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值