當前位置:首頁 » 密碼管理 » 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-14 02:39:09 瀏覽:546
我的世界什麼伺服器有前途 發布:2025-05-14 02:30:31 瀏覽:527
java程序反編譯 發布:2025-05-14 02:18:46 瀏覽:457
蛤蟆編程 發布:2025-05-14 02:17:12 瀏覽:642
解壓縮文件後綴 發布:2025-05-14 02:14:07 瀏覽:303
閱章娛樂系統清理數據密碼是多少 發布:2025-05-14 02:09:10 瀏覽:972
米家的密碼鎖初始密碼是多少 發布:2025-05-14 01:58:51 瀏覽:36
存儲空間和內存的區別 發布:2025-05-14 01:57:20 瀏覽:951
市裡煤炭資源配置是什麼意思 發布:2025-05-14 01:52:23 瀏覽:307
c刪除一行資料庫 發布:2025-05-14 01:50:53 瀏覽:74