javascript 跨域请求的两种方法

本文介绍两种解决JavaScript跨域访问的方法:一是通过创建跳转页面间接请求数据;二是利用浏览器加载JS不受跨域限制的特点,远程加载JavaScript代码并回调本地函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

还在为javascript跨域访问头疼么?

以下两种解决方案或许可以帮你解忧:

 

1. 使用跳转请求页

 

使用跳转页不做详细介绍了,原理比较简单,因为服务器端脚本不存在跨域访问,所以在当前域名下新增一个页面来进行请求当前域外的页面,进而获得所需数据,给当前域下的页面使用。

就相当于是,我要给国外的一位朋友送一个礼物,但是我没有获得签证(浏览器的许可),不能出国,所以只好委托一个快递公司来帮我做这件事了,区别是雇佣快递公司需要钱,多写个跳转页面成本没那么高 :)

 

2. 远程加载 javascript 方法

 

单独使用javascriptxmlhttp请求(也就是AJAX技术)其他域名下的页面时,会有权限问题。

 

浏览器对javascript本身加载js并没有跨域问题,例如

<script type="text/javascript" src=" http://www.test.com/test.jsp "></script>中的src可以是任意的地址(域名可以不是当前请求的页面的域名)

 

因此,我们可以利用这一点来进行javascript的跨域请求。

 

示例代码:a.html


 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2<html xmlns="http://www.w3.org/1999/xhtml">
 3
 4<body>
 5
 6<head>
 7
 8         <title></title>
 9
10ExpandedBlockStart.gifContractedBlock.gif         <script type=”text/javascript”>
11
12ExpandedSubBlockStart.gifContractedSubBlock.gif         function fnShowResult(strResult){
13
14                   //TODO:strResult是通过jsp获取到的数据,当然这个函数可以有多个参数
15
16         }

17
18
</script>
19
20</head>
21
22<div>相关咨询:</div>
23
24</body>
25
26<script type="text/javascript" src=" http://www.test.com/test.jsp ?cnt=10"></script>
27
28</html>
29

 

其中,src的地址http://www.test.com/test.jsp就是远程需要加载的javascript代码页面。

这个test.jsp中可以实现你所需要读取数据的操作,并组织成javascript代码输出。

 

示例代码:test.jsp


ContractedBlock.gifExpandedBlockStart.gifCode
<%@ page language="java" contentType="text/html;charset=gbk" session="false" %>

<%@ page import = "java.lang.Integer,java.util.* %>

<%request.setCharacterEncoding("utf-8");%>

<%
         String strCnt 
= request.getParameter("cnt");

         
int nCnt = 10;

         
if(strCnt != null)

                   nCnt 
= Integer.parseInt(strCnt);

        

         String strContent 
= "";

         
for(int i=0; i<nCnt; i++){

                   strContent 
+= "<div>这里是测试数据_"+i+"</div>";

         }

         String strScript 
= "fnShowResult('"+strContent+"');";
%>

<%=strScript%>

 

这样,在test.jsp中读取所需数据之后,就调用a.html中已经定义好的fnShowResult函数来进行数据的展示了。哈哈,这样是不是很好玩?

 

不过,需要注意的是这种方法在给test.jsp提交数据参数时,是使用了get方法来提交信息,而get方法每次提交的信息不能超过 2k,不过在大部分应用2K都还够用,不是吗?

转载于:https://www.cnblogs.com/zhangqingping/archive/2009/03/20/1417879.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值