JAVA跨域
来源:互联网 发布:java反射机制教程 编辑:程序博客网 时间:2024/06/03 16:44
在做项目的时候遇到了跨域的问题…
后端跨域,一般会修改头部信息
看了一下度娘,很多都是filter 设置”Access-Control-Allow-Origin”
然后我就写了个servlet(对方是用ajax[jsonp]调用的),代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String origin = request.getHeader("Origin"); response.setHeader("Access-Control-Allow-Origin",origin); response.setHeader("Access-Control-Allow-Credentials","true"); //do sth String result = "testResult"; response.getWriter().println(result); }
果然,对方可以正常调用,但是收不到我发送的数据。。。
百思不得其解之下,我寻求其它的思路,于是便修改代码,如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get the backcall 获取回调方法 String back = WebUtils.getHTTPRequestParameter(request, "callback"); //do sth JSONObject json= new JSONObject(); json= (new JSONObject()).put("status", "success"); //发送数据的时候加上 回调方法 格式如: backcall(111) response.getWriter().println(back+"("+json.toString()+")");}
附上前端代码
$.ajax({ url:"",//跨域调用的url dataType:'jsonp', data:'', jsonp:'callback', success:function(result) { //do sth } });
Jsonp原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp。
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里(动态执行回调函数)。
阅读全文
1 0
- JAVA跨域
- 【Java基础】Session跨域
- java 中 ajax跨域
- PDF.JS+JAVA跨域
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- 图片等比压缩
- laravel框架实现一个简单网站的思路
- 数据结构与算法分析c++:算法分析
- 高并发下redis的瓶颈分析
- 记录
- JAVA跨域
- 阻止js事件冒泡的方法
- 扩展卡尔曼滤波EKF与多传感器融合
- 分布式事务的一种实现方式--状态流转
- Noip 2009 最优贸易
- opus 规范 与参数解析
- php获取浏览器信息 访客语言 操作系统 IP地址
- SSD论文学习总结一
- 欢迎使用CSDN-markdown编辑器