跨域实现之JSONP/CORS模板代码及笔记
发布日期:2022-02-21 17:40:18
浏览次数:38
分类:技术文章
本文共 2571 字,大约阅读时间需要 8 分钟。
1 JSONP实现跨域
JSONP说明
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通, 而JSONP技术可以解决该问题.
JSONP原理说明
步骤:
1).利用javaScript中的src属性实现远程数据的获取 获取的数据是一个JS对象 由浏览器负责解析JS.<script type="text/javascript" src="http://manage.jt.com/test.json"></script>
2).自定义回调函数.
JSONP优化
1).函数名称应该动态传递过去的.
2).能否利用常规的ajax实现JSONP调用. 3).能否动态生成一个回调函数.入门案例:
js模板代码
$(function(){ alert("测试访问开始!!!!!") $.ajax({ url:"http://manage.jt.com/web/testJSONP", type:"get", //jsonp只能支持get请求 dataType:"jsonp", //dataType表示返回值类型 //jsonp: "callback", //指定参数名称 //jsonpCallback: "hello", //指定回调函数名称 success:function (data){ //data经过jQuery封装返回就是json串 alert(data.itemId); alert(data.itemDesc); //转化为字符串使用 //var obj = eval("("+data+")"); //alert(obj.name); } }); })
controller模板代码(自定义):
/** * 完成JSONP的跨域访问 * url: http://manage.jt.com/web/testJSONP?callback=jQuery11110866571904203129_1607672014673&_=1607672014674 * 参数:callback=jQuxxxxxx * 返回值:callback(JSON) */ @RequestMapping("/web/testJSON") public String jsonp(String callback) { ItemDesc itemDesc = new ItemDesc(); itemDesc.setItemId(101L).setItemDesc("跨域访问"); String json = ObjectMapperUtil.toJSON(itemDesc); return callback + "(" + json + ")"; }
高级API自动封装JSONP:
import com.fasterxml.jackson.databind.util.JSONPObject;
/** * JSONPObject 对象 * */ @RequestMapping("/web/testJSONP") public JSONPObject jsonp2(String callback){ ItemDesc itemDesc = new ItemDesc(); itemDesc.setItemId(101L).setItemDesc("跨域访问"); return new JSONPObject(callback,itemDesc); }
2 CORS实现跨域
CORS介绍
跨域资源共享(英语:Cross-origin resource sharing,缩写:CORS),用于让网页的受限资源能够被其他域名的页面访问的一种机制。(实现跨域),CORS通过在响应头中标识允许跨域的网址.之后同源策略基于安全性的规范予以放行的一种跨域访问方式.
说明:需要在服务器中添加允许访问的标识即可.入门案例
编辑CORS配置类
@Configurationpublic class CORSConfig implements WebMvcConfigurer { /** * 添加资源共享的策略 * 参数说明: * 1.addMapping() 什么样的请求允许跨域 * 2.allowedOrigins() 设定允许访问的网址 * 3.allowCredentials() 是否允许携带cookie * */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 允许跨域的域名 .allowedOrigins("*") // 允许跨域的源 //如果设置true时,则必须设定允许访问的网址,不可以用*号标识. .allowCredentials(false); // 是否允许携带cookie //.maxAge() 30分钟 // 跨域一次成功后多长时间内不再校验是否安全 //.allowedMethods("*") GET POST HEAD }}
页面效果访问
总结: 使用CORS技术后可以直接用普通json数据格式进行跨域.转载地址:https://blog.csdn.net/weixin_40597409/article/details/113833661 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月01日 03时55分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Ubuntu 下安装thttpd Web服务器
2021-06-30
用thttpd做Web Server
2021-06-30
服务器端开发经验总结 Linux C语言
2021-06-30
将网站程序放在tmpfs下
2021-06-30
使用Nginx的proxy_cache缓存功能取代Squid
2021-06-30
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
2021-06-30
nginx 的proxy_cache才是王道
2021-06-30
Nginx proxy_cache 使用示例
2021-06-30
Nginx源代码分析 - 日志处理
2021-06-30
使Apache实现gzip压缩
2021-06-30
Memcached在大型网站中应用
2021-06-30
Hadoop简要介绍
2021-06-30
squid中的X-Cache和X-Cache-Lookup的意义
2019-04-27
squid 优化指南
2019-04-27
编程方式刷新Squid缓存服务器的五种方法
2019-04-27
centos vnc配置笔记
2019-04-27
Linux服务器网络开发模型
2019-04-27
nginx虚拟目录设置 alias 和 root
2019-04-27
理解http响应头中的Date和Age
2019-04-27
四层和七层负载均衡的区别
2019-04-27