js跨域问题的三种解决方案

 时间:2024-10-14 07:48:32

js跨域问题的三种解决方案

工具/原料

js

JSONP:

1、因为< script>标签不受跨域限制,因此在此基础上出现了JSONP的ajax请求方式。通过包装一个< script>标签,去请求接口,然后返回数据及回调函数,这样就达到了跨域的目的。

js跨域问题的三种解决方案

2、JSONP的请求方式,需要设置dataType为"jsonp",表明这是一个jsonp的请求,jsonp是指定查询字符串中回调函数的参数的名称,枣娣空郅jsonpCallback指定的是查询字符串中回调的函数名。一个标准的jsonp的请求如下所示:

js跨域问题的三种解决方案

3、so艘绒庳焰np只支持get请求,所有的参数都会转化为查询字符串,然后再补上回调函数的参数(就是这里的callback=print像粜杵泳),如果jsonpCallback没有指定,jQuery会自动生成一个随机的函数名称,例如:

js跨域问题的三种解决方案

4、后台处理如下:

js跨域问题的三种解决方案

设置Access-Control-Allow-*头:

1、jsonp的方式虽然简便,但有个缺点,就是只支持get请求,对于只支持post的接口就不支持了。通过后台设置Access-Control-*等header,可以解决跨域问题,而且get,post都支持。

js跨域问题的三种解决方案

2、A罕铞泱殳ccess-Control-Allow-Origin设置允许跨域的白名单,在白名单里的跨域请求是允妓罹鐾岭许的。Access-Control-Allow-Methods设置接受的方法,这里只接受POST方法。Access-Control-Allow-Headers设置接受的请求头,用逗号分隔。Access-Control-Allow-Max-Age设置预检的有效期,单位为秒。发送正式请求前,浏览器会预先发送一个预检请求,如果服务器返回了上述信息,表明是可以跨越请求的,然后才会正式发送请求。预检成功后,在有效期内就不用再发送了。

js跨域问题的三种解决方案

通过注解的方式允许跨域:

1、非常简单,我们可以在Controller类或其方法上加@CrossOrigin注解,来使之支持跨域。举例:

js跨域问题的三种解决方案

2、其中origins为CrossOrigin的默认参数,即跨域来源,*即任何来源,也可以是其他域名。即可以以以下形式:

js跨域问题的三种解决方案

3、通过配置文件的方式允许跨域在web.xml中添加如下配置:

js跨域问题的三种解决方案
  • 浙里办怎样申请水上水下活动许可
  • 台风与飓风的不同点在于哪里
  • 欧标缩水率洗衣机 FOM71 CLS-水位校正方法
  • 硫酸钠能应用在橡胶中吗
  • 全民枪战2如何分享对局房间
  • 热门搜索
    文明手抄报图片 创城手抄报 六一手抄报简单又漂亮 庆元旦手抄报 关于防控疫情的手抄报 冠状病毒手抄报 心理健康知识手抄报 有关绿色环保的手抄报 世界读书日手抄报内容 手抄报资料