跨域測試代碼
跨域是前後端經常會碰到的問題,那麼如何快速的定位這個問題呢?可以使用如下代碼,進行測試,分別對目標地址,進行
普通訪問
和跨域訪問(前端處理跨域)
。還可以顯示出,響應時間。
測試頁面代碼
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="js判斷URL是否可訪問" />
<title>js判斷URL是否可訪問</title>
</head>
<body>
<div>檢驗的url地址:</div>
<input type="text" style="width:600px;height:30px;font-size:14px;" id="urlText" value="https://www.baidu.com/" />
<input type="button" value="判斷是否可訪問" onclick="getURL()" />
<br />
<div id="msg1"></div>
<div id="msg"></div>
<br />
-----------前端處理跨域後訪問(使用jsonp)-------------
<br />
<div id="msg22"></div>
<div id="msg2"></div>
<script src="https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
function getURL() {
$("#msg").html("");
var url = $("#urlText").val();//請求的url
var dateTime = disptime();
var time2 = dateTime.DateTime;
$("#msg1").html("發送時間:" + time2);
$.ajax({
type: 'get',
url: url,
cache: false,
dataType: "json",
processData: false,
timeout:10000, //超時時間,毫秒
complete: function (data) {
var dateTime2 = disptime();
var time22 = dateTime2.DateTime;
var htmlTxt =[];
if (data.status==200) {
htmlTxt.push("成功<br/>");
} else {
htmlTxt.push("失敗<br/>");
}
htmlTxt.push("readyState=" + data.readyState + "<br/>status=" + data.status + "<br/>statusText=" + data.statusText + "<br/>響應時間:" + time22);
var htmlString = htmlTxt.join('');
$("#msg").html(htmlString);
}
});
getURL1();
}
function getURL1() {
$("#msg2").html("");
var url = $("#urlText").val();//請求的url
var dateTime = disptime();
var time2 = dateTime.DateTime;
$("#msg22").html("發送時間:" + time2);
$.ajax({
type: 'get',
url: url,
cache: false,
dataType: "jsonp", //跨域採用jsonp方式
processData: false,
timeout:10000, //超時時間,毫秒
complete: function (data) {
var dateTime2 = disptime();
var time22 = dateTime2.DateTime;
var htmlTxt =[];
if (data.status==200) {
htmlTxt.push("成功<br/>");
} else {
htmlTxt.push("失敗<br/>");
}
htmlTxt.push("readyState=" + data.readyState + "<br/>status=" + data.status + "<br/>statusText=" + data.statusText + "<br/>響應時間:" + time22);
var htmlString = htmlTxt.join('');
$("#msg2").html(htmlString);
}
});
}
function disptime() {
var date = new Date();
var yyyy = date.getFullYear();//四位年份
var month = date.getMonth() + 1;//月份 0-11
var day = date.getDate();//日
var HH = date.getHours();//時
var minute = date.getMinutes();//分鐘
var second = date.getSeconds();//秒
var milliseconds=date.getMilliseconds();//毫秒
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
if (HH < 10) {
HH = "0" + HH;
}
if (minute < 10) {
minute = "0" + minute;
}
if (second < 10) {
second = "0" + second;
}
var time = yyyy + "-" + month + "-" + day + " " + HH + ":" + minute + ":" + second + " " + milliseconds;
var timeTxt = yyyy + month + day + HH + minute + second;
var time = {
DateTime: time,
TimeTxt: timeTxt
}
return time;
}
</script>
</body>
</html>
測試結果頁面
可以看到,分別進行了兩次請求,第一次爲前端直接訪問,爲跨域處理
。結果,請求失敗。
第二次,爲前端處理跨域後再訪問
,訪問成功。
說明,後端沒有開啓跨域處理。