当前位置:首页 » 密码管理 » ajax跨服务器访问

ajax跨服务器访问

发布时间: 2022-10-21 11:45:17

❶ 如何解决ajax跨域问题

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>

❷ webservice跨域问题ajax

IE9、Chrome、FF、Opera支持ResponseHeader Access-Control-Allow-Origin

IE下得额外配置:

jQuery.support.cors = true; (启用读取上面那个头信息的功能)

点击IE浏览器的的“工具->Internet 选项->安全->自定义级别”将“其他”选项中的“通过域访问数据源”选中为“启用”或者“提示”,点击确定就可以了。(自身的过滤)

❸ JS里AJAX的使用--(服务器与客户端数据交换)

使用ajax需要先了解计算机前后端的通信原理,也就是需要了解我们的服务器与客户端数据是如何交换的。

DNS的查询过程:(以访问www.qq.com为例)

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己 本地的hosts文件 是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找 本地DNS解析器缓存 ,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它 本地DNS服务器 ,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该 服务器 已 缓存 了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至 根DNS ,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该 顶级域名服务器 的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。

端口号

端口号---具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。

0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。

那么端口号到底有什么作用呢?请大家继续往下看。

当一台电脑启动了一个可以让远程其他电脑访问的程序,那么它就要开启至少一个端口号来让外界访问。我们可以把没有开启端口号的电脑看作是一个密封的房间,密封的房间当然不可能接受外界的访问,所以当系统开启了一个可以让外界访问的程序后它自然需要在房间上开一个窗口来接受来自外界的访问,这个窗口就是端口。

那么为什么要给端口编号来区分它们呢,既然一个程序开了一个端口,那么不是外部信息都可以通过这个开启的端口来访问了吗?答案是不可以。为什么呢?因为数据是用端口号来通知传输层协议送给哪个软件来处理的,数据是没有智慧的,如果很多的程序共用一个端口来接受数据的话,那么当外界的一个数据包送来后传输层就不知道该送给哪一个软件来处理,这样势必将导致混乱。

上一次提到提到在一个经过OSI第四层传输层封装的数据段的第四层报头里包含两个端口号,既源端口号和目的端口号,目的端口号的作用上面已经介绍了,下面让我们了解一下原端口号吧。

源端口号一般是由系统自己动态生成的一个从1024-65535的号码,当一台计算机A通过网络访问计算机B时,如果它需要对方返回数据的话,它也会随机创建一个大于1023的端口,告诉B返回数据时把数据送到自己的哪个端口,然后软件开始侦听这个端口,等待数据返回。而B收到数据后会读取数据包的源端口号和目的端口号,然后记录下来,当软件创建了要返回的数据后就把原来数据包中的原端口号作为目的端口号,而把自己的端口号作为原端口号,也就是说把收到的数据包中的原和目的反过来,然后再送回A,A再重复这个过程如此反复直到数据传输完成。当数据全部传输完A就把源端口释放出来,所以同一个软件每次传输数据时不一定是同一个源端口号.

端口分类 逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:

1、 按端口号分布划分

(1)知名端口(Well-Known Ports)

知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

(2)动态端口(Dynamic Ports)

动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。

2、按协议类型划分

按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:

(1)TCP端口

TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。

(2)UDP端口

UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。

常用的端口号

【21端口】

21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。

【23端口】

23端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。

【25端口】

25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。

【53端口】

53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。

【69端口】

TFTP是Cisco公司开发的一个简单文件传输协议,类似于FTP。

【80端口】

80端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。

【443 端口】

服务:Https

说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。

【109、110端口】

109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的。

110端口是为POP3(邮件协议3)服务开放的,POP2、POP3都是主要用于接收邮件的。

❹ 为什么有人说ajax不能跨域是什么意思 不是可以通过ajax跨域访问吗

嗯,就是说啊,ajax只能在自己的域下访问,比如在腾讯里面写的AJAX 是不能去访问网络里面的东西的,这就是跨域的!使用AJAX是需要服务器环境的,目前只有火狐浏览器不需要搭建环境,即可直接使用AJAX操作!

❺ ajax是什么ajax的交互模型ajax跨域的解决办法

1.AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。
AJAX 是一种用于创建快速动态网页的技术
2.你可以参看:http://blog.csdn.net/chenmoquan/article/details/38560649
3.
1). 通过修改document.domain和隐藏的IFrame来实现跨域请求。这种方案可能是最简单的一种跨域请求的方案,但是它同样是一种限制最大的方 案。首先,它只能实现在同一个顶级域名下的跨域请求;另外,当在一个页面中还包含有其它的IFrame时,可能还会产生安全性异常,拒绝访问。
2).通过请求当前域 的代理,由服务器 代理去访问另一个域的资源。XMLHttpRequest通过请求本域内的一个服务器资源 ,将要访问的目标资源提供给服务器,交由服务器 去代理访问目标资源。这种方案,可以实现完全的跨域访问,但是开发,请求过程的消费会比较大。

❻ jsp ajax如何跨域访问

jquery 的 jsonp是要有jsonpCallback属性的,如:

$.ajax(
url:"",
type:"post",
dataType:"jsonp",
jsonpCallback:"mycallback",
...,
success:function(){},error:function(){}
);

这个jsonpCallback服务器端要获取到,然后在返回的数据包在jsonpCallback中,如:

mycallback({"name":"德缘哥哥","gerden":"boy"})//当然这整个是字符串哦!

❼ ajax如何调用服务器方法]

ajaxpro官方网站网址
http://www.ajaxpro.info/

AjaxPro for .net 基础例子这里就不阐述Ajax别的东西了,用到了一个DLL,地址如右:www.schwarz-interactive.de 直接上例子

1。这里的环境是VS2005,用到了里面的AjaxPro.2.dll,新建个Asp.net的工程,名字叫AjaxProDemo,引用AjaxPro.2.dll到工程里(放在BIN文件夹下,废话!)

2。保存运行一下,会生成Web.Config,搞不清楚2005为什么不建立工程的时候匹配一个Web.Config 。。。。。。

3。在生成的Web.Config里加上这样一段话
<system.web>
<httpHandlers>
<add verb="POST,GET" path="AjaxProDemo/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
他的意思是所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理.

4。编写服务器端的Ajax函数:

他和普通的服务器方法唯一不同的地方就是他必须要在方法的上面添加[AjaxPro.AjaxMethod]

在Default.aspx的页面中加如下面的代码(几乎所有的Ajax的基础例子都是以做加法开始的

[AjaxPro.AjaxMethod]
public string AddTwo(int firstInt, int secondInt)
{
return Convert.ToString(firstInt + secondInt);
}

5。编写完成步骤4后在Page_Load里面把这个类注册一下

protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}

6。编写Default的前台代码了。。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>AjaxProUseDll</title>
<script language="javascript" type="text/javascript">
function addInt()
{
var i1 = document.getElementById('T1').value;
var i2 = document.getElementById('T2').value;
document.getElementById('B2').value = _Default.AddTwo(i1,i2).value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="T1" /> + <input type="text" id="T2" /> = <input type="button" id="B2" value="相加求和" onclick="addInt()" />
</div>
</form>
</body>
</html>

这里很简单的放了两个文本框,一个按钮,点它的时候调用服务器的AddTwo方法。。。,注意值的返回需要.value(这里全是用的HTML控件,别加成了服务器控件)

7。在项目里建立一个Global.asax的页面。。。(这个地方浪费了半个小时才解决),在Application_Start事件里加上AjaxPro.Utility.HandlerPath = "AjaxProDemo";如果不出什么意外的话,运行程序。。。输入数字点按钮应该会得出相加的结果了。。。这里需要说明的是,这个Ajaxpro也可以在vs2003中运行,不过引用的DLL是AjaxPro.DLL,另外2003默认会有一个namespace,这个时候需要在页面最上改为Inherits="[你的namespace名称]._Default"。之后在JS里调用服务器的时候就不是_Default.AddInt().value,需要改成[你的namespace名称]._Default.AddInt().value(奇怪2005也没有了默认的namespace了,但如果有需要,加上也可以)

慢慢看。

❽ ajax跨域请求如何实现

方法一、 采用jsonp (只支持get请求,后端返回的jsonp格式json,后端无需做请求放行操作)

方式三: XHR2(XMLHttpRequest Level 2)

需要设置后端请求放行
response.setHeader(“Access-Control-Allow-Origin”,”*”);
response.setHeader(“Access-Control-Allow-Methods”,”GET,POST”);

1.可以获取服务器端的二进制数据。
2.可以友好的提交表单数据
3.可以上传文件(内置控制上传进度事件逻辑)
4.使用HTML表单来初始化一个FormData对象

❾ jquery ajax从一个网站向另一个网站请求,怎么实现

首先呢提醒下ajax是不能跨站点访问的,这个是不被允许的,如果实在需要,可以先发送ajax到本域名下的站点,然后再后台curl另一站点,服务器之间的curl通信是可以得,然后将curl的结果返回给页面

或者可以考虑使用JSONP。。。前提是另一个站支持JSONP请求。。
var jsonp = function (url, callback) {
if (typeof url=== 'undefined') {
throw 'the 1st param "url" missing';
}

if (typeof callback === 'undefined') {
throw 'the 2nd param "callback" missing';
}
var jsonpcallback = 'callback' + new Date().valueOf();
if (typeof callback !== 'string') {
window[jsonpcallback] = callback;
callback = jsonpcallback;
} else {
window[jsonpcallback] = function (data) {
eval(callback).call(window, data);
}
}

var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url + (url.indexOf('?') == -1 ? '?' : '&') + 'callback=' + jsonpcallback);
var head = document.getElementsByTagName('head')[0];
head.appendChild(script);
}

通过
jsonp(url, callback)
调用

热点内容
局域网怎么搭建校时服务器 发布:2025-05-13 21:11:32 浏览:676
存储器读写实验心得 发布:2025-05-13 21:09:23 浏览:15
派派手机如何设置密码 发布:2025-05-13 21:08:02 浏览:774
狱辱实验栋第2集在线ftp 发布:2025-05-13 21:02:06 浏览:11
安卓桌面应用如何变大 发布:2025-05-13 20:59:39 浏览:361
解压通知单有什么用 发布:2025-05-13 20:58:37 浏览:567
俄罗斯方块的编程 发布:2025-05-13 20:51:08 浏览:611
python开发项目 发布:2025-05-13 20:44:17 浏览:736
安卓手机怎么样刷国行系统 发布:2025-05-13 20:44:14 浏览:320
云服务器端口如何设置断网间隔 发布:2025-05-13 20:43:15 浏览:131