如何解决ajax跨域问题

 我来答
huanglenzhi
2015-07-19 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517195
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  1.通过中间过渡层解决跨域问题
  
  (1)通过Web代理服务器将不同域的应用统一通过代理服务器进行隔离,所有的应用都在一个域名下面了。(比如apache,nginx等)
  
  
  (2)跨域的安全限制都是指浏览器端来说的.服务器端是不存在跨域安全限制的,所以通过本机服务器端通过类似httpclient方式完成“跨域访问”的工作。
  
  
  2.通过<script>标签解决跨域问题
  注意:凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>
  示例:
  前台脚本:
  
  Java代码
  <script type="text/javascript">
  var flightHandler = function(data){
  alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
  };
  
  var url = "http://abc.com:8080/AjaxCrossDomain/data/data.jsp?code=CA1998&callback=flightHandler";
  
  var script = document.createElement('script');
  script.setAttribute('src', url);
  
  document.getElementsByTagName('head')[0].appendChild(script);
  </script>
  
  后台data.jsp内容:
  
  Java代码
  <%@ page language="java" pageEncoding="UTF-8"%>
  <%
  String callback = request.getParameter("callback");
  
  StringBuilder builder = new StringBuilder();
  builder.append(callback).append("({").append("\"code\": \"CA1998\",").append("\"price\": 1780,").append("\"tickets\": 5").append("});");
  out.println(builder.toString());
  %>
  
  
  使用jquery的jsonp来实现跨域访问,例子如下:
  Java代码
  <script type="text/javascript">
  $(function(){
  $.ajax({
  type: "get",
  async: false,
  url: "http://abc.com:8080/AjaxCrossDomain/jsonp/data.jsp",
  dataType: "jsonp",
  jsonp: "callback",
  jsonpCallback:"flightHandler",
  success: function(json){
  alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。');
  },
  error: function(){
  alert('fail');
  }
  });
  });
  
  </script>转载
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式