• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java跨域问题的处理详解

Java跨域问题的处理详解

作者:谢小飞 字体:[增加 减小] 来源:互联网 时间:2017-05-28

谢小飞 通过本文主要向大家介绍了java跨域问题,java解决跨域问题,java跨域请求,java 跨域访问,java跨域等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

相信大家在写前端脚本的时候经常会遇到发送数据到后台的情况,但是由于浏览器的限制,不同域名之间的数据是不能互相访问的,那前端怎么和后端如何进行数据之间的交换呢?

JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题?

答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策略。那么什么是同源呢?所谓的同源是指三个方面“相同”:

  1. 域名相同
  2. 协议相同
  3. 端口相同

下面就举几个例子来帮助更好的理解同源策略。

URL 说明 是否允许通信
http://www.a.com/a.js 
http://www.a.com/b.js
同一域名 允许
http://www.a.com/a.js 
http://www.b.com/a.js
不同域名 不允许
http://www.a.com:8000/a.js
http://www.a.com/b.js
同一域名不同端口 不允许
https://www.a.com/a.js 
http://www.a.com/b.js
同一域名不同协议 不允许

在JAVA中处理跨域问题,通常有以下两种常用的解决方法。

第一种解决方法

后台代码在被请求的Servlet中添加Header设置:

response.setHeader("Access-Control-Allow-Origin", "*");
PrintWriter out =null;
try
{
 out = response.getWriter();
} catch (IOException e)
{
 // TODO Auto-generated catch block
 e.printStackTrace();
}
out.print("{'status':'ok'}");
out.flush();
out.close();
</div>

Access-Control-Allow-Origin这个Header在W3C标准里用来检查该跨域请求是否可以被通过,如果值为*则表明当前页面可以跨域访问。默认的情况下是不允许的。

在前端JS中需要向Servlet发出请求,请求代码如下所示:

$.ajax({
 url: "your url",
 type:"get or post",
 dataType:"json",
 data:{
 ....
 },
 success:function(data){
 ...
 }
</div>

第二种解决方法

通过jsonp跨域请求的方式。JSONP和JSON虽然只有一个字母的区别,但是他们完全就是两回事,很多人很容易把他们搞混。JSON是一种数据交换的格式,而JSONP则是一种非官方跨域数据交互协议。

首先来说一下前端JS是怎么发送请求。代码如下所示:

$.ajax({
 url:"your url",
 type:"get or post",
 async:false,
 dataType : "jsonp",
 //服务端用于接收callback调用的function名的参数
 jsonp:"callbackparam",
 //callback的function名称
 jsonpCallback:"success_jsonpCallback",
 success:function(data){
 console.log(data);
 },
 error:function(data){
 console.log(data);
 }
});
</div>

这里的callbackparam和success_jsonpCallback可以理解为发送的data数据的键值对,可以自定义,但是callbackparam需要和后台约定好参数名称,因为后台需要获取到这个参数里面的值(即success_jsonpCallback)。

下面,最重要的来了,后台怎么样获取和返回数据呢。代码如下所示:

PrintWriter out =null;
String callback=req.getParameter("callbackparam");
String json=callback+"({'status':'ok'})";
try
{
 out = resp.getWriter();
} catch (IOException e)
{
 // TODO Auto-generated catch block
 e.printStackTrace();
}
out.print(json);
out.flush();
out.close();
</div>

首先需要获取参数名为callbackparam的值,这里获取到的值就是“success_jsonpCallback”。然后将这个值加上一对小括号。小括号里放入你需要返回的数据内容,比如这里我返回一个JSON对象。当然你也可以返回其他对象,比如只返回一个字符串类型数据也可以。最后前端JS返回的数据就是这样的:

success_jsonpCallback({'status':'ok'})
</div>

浏览器会自动解析为json对象,这时候你只需要在success回调函数中直接用data.status就可以了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java跨域问题的处理详解

相关文章

  • 2017-05-28Java 利用dom方式读取、创建xml详解及实例代码
  • 2017-05-28SpringBoot添加Email发送功能及常见异常详解
  • 2017-05-28SpringBoot配置Email发送功能实例
  • 2017-05-28java异常处理详细介绍及实例
  • 2017-05-28spring boot使用thymeleaf跳转页面实例代码
  • 2017-05-28spring+html5实现安全传输随机数字密码键盘
  • 2017-05-28Java中自定义异常详解及实例代码
  • 2017-05-28java web开发中大量数据导出Excel超时(504)问题解决
  • 2017-05-28java数据结构与算法之插入排序详解
  • 2017-05-28javaweb实现文件上传示例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • java this 用法详解及简单实例
    • servlet实现用户登录小程序
    • Java集合删除元素ArrayList实例详解
    • java 实现汉诺塔详解及实现代码
    • struts2如何使用拦截器进行用户权限控制实例
    • springboot整合 beatlsql的实例代码
    • BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理
    • Java中的四种单例模式浅析
    • 浅谈TreeSet中的两种排序方式
    • Java 继承方法实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有