什么是跨域

跨域,它是不同的域名(服务器)之间的相互的资源之间的访问。

当协议,域名,端口号任意一个不同,它们就是不同的域。

正常情况下,因为浏览器安全的问题,不同域之间的资源是不可以访问的。

跨域的解决方案

什么情况下会用到跨域?

一般情况,是在自己的内部的工程中会出现跨域的情况。

有三种解决方案:

1.服务器跨域(代理方案)

2.jsonp,<script>标签的开发策略。

3.XHR2,HTML5提供,一般是在移动开发中使用。

jQuery解决跨域操作

在jquery中可以使用$.ajax,$.getJSON,$.getScript来解决跨域问题。

前端html/js部分代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>案例-显示商品信息</title>
<script type="text/javascript"
src="/jquery_crossDomain/js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function() {
//将div隐藏
$("#content").hide();
$("#a").toggle(function() {
//向服务器发送请求,得到商品信息,在页面上展示
var url = "http://localhost:8080/jquery_ajax/product?callback=?"
$.getJSON(url,function(data) {
var jsonObj = eval(data);
//[{"count":100,"id":1,"name":"电视机","price":2000},{"count":200,"id":2,"name":"洗衣机","price":1000}]
//处理响应json数据,封装成table的html代码
var tab = $("<table border='1'><tr><td>编号</td><td>名称</td><td>数量</td><td>价格</td></tr></table>"); for (var i = 0; i < jsonObj.length; i++) {
var obj = jsonObj[i];
var tr = $("<tr><td>"
+ obj.id
+ "</td><td>"
+ obj.name
+ "</td><td>"
+ obj.count
+ "</td><td>"
+ obj.price
+ "</td></tr>");
//内部插入操作
tab.append(tr);
}
//将table在添加到div中
$("#content").append(tab); //显示div
$("#content").fadeIn(1500); });
}, function() {
//将商品的信息隐藏
//将div隐藏
$("#content").fadeOut(1500);
//清空div
$("#content").html("");
});
});
</script>
</head>
<body>
<a href="javascript:void(0)" id="a">显示商品信息</a>
<hr>
<div id="content"></div>
</body>
</html>

后台java代码部分:

public class ProductServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String callback=request.getParameter("callback");
//处理响应数据的中文乱码
response.setCharacterEncoding("utf-8");
Product p1 = new Product();
p1.setId(1);
p1.setCount(100);
p1.setName("电视机");
p1.setPrice(2000); Product p2 = new Product();
p2.setId(2);
p2.setCount(200);
p2.setName("洗衣机");
p2.setPrice(1000); List<Product> list = new ArrayList<Product>();
list.add(p1);
list.add(p2);
// 将其转换成json响应到浏览器 fastjson进行java对象到json之间的转换
String json = JSONObject.toJSONString(list);
response.getWriter().write(callback+"("+json+")");
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }

--end--

最新文章

  1. linux 文件系统
  2. string.capwords() 将每个单词首字母大写
  3. The Towers of Hanoi Revisited---(多柱汉诺塔)
  4. easyui提交表单数据的时候如何防止二次提交
  5. vs2008 添加与修改模板.
  6. 亲测安装php
  7. 知识库系统confluence5.8.10 安装与破解
  8. C# 根据IP查询地址归属地
  9. JPA 系列教程6-单向多对多
  10. Mysql常用30种SQL查询语句优化方法
  11. Node.js_Buffer 缓冲区
  12. 排序算法(sorting algorithm)之 插入排序(insertion sort)
  13. 51Nod 博弈模板题
  14. 峰Redis学习(7)Redis 之Keys 通用操作
  15. sql number类型和varchar2类型
  16. Java代码调用Oracle的存储过程,存储函数和包
  17. 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记
  18. Populating Next Right Pointers in Each Node leetcode java
  19. FlexPaper及二次开发
  20. Invoke and BeginInvoke(转载:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html)

热门文章

  1. react中使用Ajax请求(axios,Fetch)
  2. Linux之定时任务crond
  3. python 中的__init__.py的用法与个人理解
  4. jvm的解释执行与编译执行
  5. oradebug 10046
  6. robotframework使用中的一些注意事项
  7. 【Codeforces Round 650】Codeforces #334 (Div. 1)
  8. C++11 并发指南四(&lt;future&gt; 详解二 std::packaged_task 介绍)
  9. Ajax跨越问题原因分析与解决思路
  10. R实战 第十二篇:随机数