當前位置:首頁 » 密碼管理 » ajax跨域訪問

ajax跨域訪問

發布時間: 2022-01-09 06:54:31

1. AJAX跨域訪問解決方法

IE9、Chrome、FF、Opera支持ResponseHeader Access-Control-Allow-Origin
IE下得額外配置:
jQuery.support.cors = true; (啟用讀取上面那個頭信息的功能)
點擊IE瀏覽器的的「工具->Internet 選項->安全->自定義級別」將「其他」選項中的「通過域訪問數據源」選中為「啟用」或者「提示」,點擊確定就可以了。(自身的過濾)

2. ajax跨域

js跨域調用有的是不允許的
一般要後台代碼才能實現
js是前台的本地代碼

3. Jquery AJAX跨域問題怎麼解決

用JSONP可以實現ajax跨域訪問:

jQuery.ajax({
url: 'http://192.168.1.xxx:8080/jsonp.action?arg=123',
type: 'GET',
dataType: "jsonp", // 注意dataType是jsonp
cache: false,
success: function(data){
alert(data.key); //這里就把你傳入的123顯示出來
}
});
不知道你後台用的是什麼語言,如果是java,可以像這樣寫:
public void jsonp() {
String arg = this.getRequest().getParameter("arg");
this.writeResponse("({key:'" + arg + "'})");
}

4. 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對象

5. 如何解決ajax跨域問題

首先來看看在頁面中如何使用jQuery的ajax解決跨域問題的簡單版:

$(document).ready(function(){
var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"
+"?id=1&callback=?';
$.ajax({
url:url,
dataType:'jsonp',
processData: false,
type:'get',
success:function(data){
alert(data.name);
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}});
});

這樣寫是完全沒有問題的,起先error的處理函數中僅僅是alert(「error」),為了進一步弄清楚是什麼原因造成了錯誤,故將處理函數變 為上面的實現方式。最後一行alert使用為;parsererror。百思不得其解,繼續google,最終還是在萬能的stackoverflow找 到了答案,鏈接在這里。原因是jsonp的格式與json格式有著細微的差別,所以在server端的代碼上稍稍有所不同。
比較一下json與jsonp格式的區別:
json格式:
{
"message":"獲取成功",
"state":"1",
"result":{"name":"工作組1","id":1,"description":"11"}
}

jsonp格式:
callback({
"message":"獲取成功",
"state":"1",
"result":{"name":"工作組1","id":1,"description":"11"}
})

看出來區別了吧,在url中callback傳到後台的參數是神馬callback就是神馬,jsonp比json外面有多了一層,callback()。這樣就知道怎麼處理它了。於是修改後台代碼。
後台java代碼最終如下:

@RequestMapping(value = "/getGroupById")
public String getGroupById(@RequestParam("id") Long id,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
String callback = request.getParameter("callback");
ReturnObject result = null;
Group group = null;
try {
group = groupService.getGroupById(id);
result = new ReturnObject(group, "獲取成功", Constants.RESULT_SUCCESS);
} catch (BusinessException e) {
e.printStackTrace();
result = new ReturnObject(group, "獲取失敗", Constants.RESULT_FAILED);
}
String json = JsonConverter.bean2Json(result);
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(callback + "(" + json + ")");
return null;
}

注意這里需要先將查詢結果轉換我json格式,然後用參數callback在json外面再套一層,就變成了jsonp。指定數據類型為jsonp的ajax就可以做進一步處理了。
雖然這樣解決了跨域問題,還是回顧下造成parsererror的原因。原因在於盲目的把json格式的數據當做jsonp格式的數據讓ajax處理,造成了這個錯誤,此時server端代碼是這樣的:

@RequestMapping(value = "/getGroupById")
@ResponseBody
public ReturnObject getGroupById(@RequestParam("id") Long id,
HttpServletRequest request, HttpServletResponse response){
String callback = request.getParameter("callback");
ReturnObject result = null;
Group group = null;
try {
group = groupService.getGroupById(id);
result = new ReturnObject(group, "獲取成功", Constants.RESULT_SUCCESS);
} catch (BusinessException e) {
e.printStackTrace();
result = new ReturnObject(group, "獲取失敗", Constants.RESULT_FAILED);
}
return result;
}

至此解決ajax跨域問題的第一種方式就告一段落。

6. 如何使用js或者$ajax進行跨域請求

CORS來解決跨域的問題

7. 為什麼有人說ajax不能跨域是什麼意思 不是可以通過ajax跨域訪問嗎

嗯,就是說啊,ajax只能在自己的域下訪問,比如在騰訊裡面寫的AJAX 是不能去訪問網路裡面的東西的,這就是跨域的!使用AJAX是需要伺服器環境的,目前只有火狐瀏覽器不需要搭建環境,即可直接使用AJAX操作!

8. 什麼叫ajax跨域訪問

AJAX 跨域訪問是用戶訪問A網站時所產生的對B網站的跨域訪問請求均提交到A網站的指定頁面。

Ajax請求一個目標地址為非本域(協議、域名、埠任意一個不同)的web資源,並根據響應獲得外部應用數據。比如我們用Ajax訪問城市天氣預報、IP地址等公共服務介面時,就涉及跨域了。我們請求一個外部服務時,瀏覽器會基於安全問題拒絕授權訪問。

(8)ajax跨域訪問擴展閱讀

Ajax的優點

使用Ajax的最大優點,就是能在不更新整個頁面的前提下維護數據。這使得Web應用程序更為迅捷地回應用戶動作,並避免了在網路上發送那些沒有改變的信息。

Ajax不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執行。就像DHTML應用程序那樣,Ajax應用程序必須在眾多不同的瀏覽器和平台上經過嚴格的測試。隨著Ajax的成熟,一些簡化Ajax使用方法的程序庫也相繼問世。同樣,也出現了另一種輔助程序設計的技術,為那些不支持JavaScript的用戶提供替代功能。

9. jsp ajax如何跨域訪問

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

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

這個jsonpCallback伺服器端要獲取到,然後在返回的數據包在jsonpCallback中,如:

mycallback({"name":"德緣哥哥","gerden":"boy"})//當然這整個是字元串哦!

10. jquery ajax 跨域訪問問題

jsonp可以傳遞get不可傳遞post,目前跨域只能是jsonp方式,雖然樓上說的都有理,但是歸根到底還是沒有解決 遠程發送post數據到伺服器的問題,目前我也沒有找到合適的辦法,不過如果客戶端執行WEB腳本的話,在後台是可以發送post的,假如只是靜態,目前沒有別的辦法
能做的只能盡量簡化傳輸數據大小,採用jsonp的get方式

熱點內容
配置文件ini如何寫 發布:2024-03-29 17:31:05 瀏覽:997
如何更改微信密碼修改 發布:2024-03-29 17:24:49 瀏覽:588
探影哪個配置性價比最高 發布:2024-03-29 17:24:08 瀏覽:485
phpmyadminlinux安裝 發布:2024-03-29 17:13:15 瀏覽:792
python中replace 發布:2024-03-29 17:08:17 瀏覽:652
mdb導入sql 發布:2024-03-29 17:07:36 瀏覽:128
java資料庫工具類 發布:2024-03-29 16:31:15 瀏覽:388
安卓機哪裡看型號 發布:2024-03-29 15:59:40 瀏覽:281
cad解壓錯誤 發布:2024-03-29 15:01:45 瀏覽:79
存儲指令集 發布:2024-03-29 14:39:27 瀏覽:649