Selesaikan masalah akses lintas domain Ajax yang melaporkan tanpa izin. Teman yang membutuhkan bisa merujuknya. pintar.asp
Copy kode kodenya sebagai berikut:
<bahasa skrip=jscript runat=server>
/*
Metode panggilan di VBS
redupkanhttp saya
set myhttp = SmartHttp(url,method,data); //Ketiga parameter tersebut bersifat opsional
milik:
url: String, alamat URL yang diminta
metode: String, metode yang diminta
data: String, data yang diminta
charset: String, pengkodean data yang dikembalikan oleh URL yang diminta
status: Int, kode status yang dikembalikan oleh permintaan
readyState: Int, status komunikasi saat ini dengan permintaan HTTP, 1, 2, 3, 4
dataset: Objek, data yang diminta. Jika ditambahkan, bagian data ini akan ditambahkan ke atribut data.
properti kumpulan data:
charset: String, pengkodean data yang dikirim
metode kumpulan data:
append(key,value,noencode): menambahkan data
hapus (kunci): menghapus item data
isexists(key): Menentukan apakah suatu item data ada
clear: Hapus semua item data
metode:
header(headstr): Atur header permintaan, pisahkan item dan nilai dengan:
timeout(t1,t2,t3,t4): Mengatur waktu habis
kirim(): mengirim permintaan
getbinary: Dapatkan data biner yang dikembalikan oleh server
gettext(charset): Dapatkan teks dari pengkodean yang ditentukan
getjson(charset): Dapatkan data json dari pengkodean yang ditentukan
getheader(key): Dapatkan header respons yang dikembalikan oleh server
getxml(charset): Dapatkan data xml dari pengkodean yang ditentukan
*/
fungsi SmartHttp(url,metode,data){
kembalikan _SmartHttp(url,metode,data);
}
fungsi _SmartHttp(url,metode,data){
if(metode typeof==tidak terdefinisi) metode=GET;
if(tipe data==tidak terdefinisi) data=;
metode = metode.toUpperCase();
metode = metode!=POSTING ?
this.timeout=[10000,10000,10000,10000];
this.metode = metode;
ini.url=url;
ini.data=data;
this.charset=gb2312;
ini.http=null;
this.header=[];
ini.status=0;
ini.readyState=0;
this.konten=null;
ini.pesan=;
ini.kumpulan data={
rangkaian karakter:gb2312,
data:[],
tambahkan:fungsi(kunci,nilai,noencode){
var fn=nol;
if(this.charset.toLowerCase()==utf-8){fn = encodeURIComponent;}else{fn = escape;}
if(noencode==true){fn=fungsi(_str){return _str;}}
this.data.push({kunci:fn(kunci),nilai:fn(nilai)});
},
hapus:fungsi(kunci){
if(ini.data.panjang<=0) mengembalikan false;
var _data=[];
for(var i=0;i<ini.data.panjang;i++){
if(ini.data[i].kunci!=kunci){
_data.push(ini.data[i]);
}
}
ini.data = _data;
},
ada:fungsi(kunci){
if(ini.data.panjang<=0) mengembalikan false;
for(var i=0;i<ini.data.panjang;i++){
if(ini.data[i].kunci==kunci){
kembali benar;
}
}
kembali salah;
},
jelas:fungsi(){
ini.dataset.data=[];
}
};
}
_SmartHttp.prototype.init=fungsi(){
var kumpulan datatr=;
if(kumpulan data.data.panjang>0){
for(var i=0;i<ini.dataset.data.panjang;i++){
kumpulan data += ini.kumpulan data.data[i].kunci + = + kumpulan data ini.data[i].nilai + &;
}
}
if(datasetstr!=) datasetstr = datasetstr.substr(0,datasetstr.length-1);
if(ini.data==){ini.data = kumpulan data;}else{if(datasetstr!=)ini.data+= & + kumpulan datatr;}
if(ini.data==)ini.data=null;
//ini.url += ((ini.url.indexOf(?)<0) ? ? : &) + jornd= + ini.getrnd();
if(ini.metode==DAPATKAN && ini.data!=null) ini.url += & + ini.data;
if(this.method==POST) this.headers.push(Tipe Konten:application/x-www-form-urlencoded);
if(!this.charset || this.charset==) this.charset = gb2312;
};
_SmartHttp.prototype.header=fungsi(headstr){
if(headstr.indexOf(:)>=0) this.headers.push(headstr);
kembalikan ini;
};
_SmartHttp.prototype.timeout=fungsi(){
if(arguments.length>4){kembalikan ini;}
for(var i =0;i<argumen.panjang;i++){
if(!isNaN(argumen[i])){
this.timeout[i] = parseInt(argumen[i]);
}
}
kembalikan ini;
};
_SmartHttp.prototype.send=fungsi(){
ini.init();
var _http = ini.getobj();
if(_http==null){kembalikan ini;}
mencoba{
_http.setTimeouts(ini.waktu habis[0], ini.waktu habis[1], ini.waktu habis[2], ini.waktu habis[3]);
}tangkap(misal){}
_http.open(metode ini,url ini,salah);
if(ini.header.panjang>0){
for(var i=0;i<ini.header.panjang;i++){
var Sindex = ini.header[i].indexOf(:);
var key = ini.header[i].substr(0,Sindex);
var nilai = ini.header[i].substr(Sindex+1);
_http.setRequestHeader(kunci,nilai);
}
}
_http.kirim(ini.data);
this.readyState = _http.readyState;
if(_http.readyState==4){
this.status = parseInt(_http.status);
ini.http = _http;
this.content = _http.responseBody;
}
kembalikan ini;
}
_SmartHttp.prototype.getbinary=fungsi(){
kembalikan this.content;
};
_SmartHttp.prototype.gettext=fungsi(rangkaian karakter){
mencoba{
kembalikan this.b2s(ini.konten,charset ? charset : this.charset);
}menangkap(misal){
this.msg = ex.deskripsi;
kembali ;
}
};
_SmartHttp.prototype.getjson=fungsi(rangkaian karakter){
mencoba{
var _json=batal;
eval(_json=( + ini.gettext(rangkaian karakter) + );););
kembalikan _json;
}menangkap(misal){
this.msg = ex.deskripsi;
kembalikan nol;
}
};
_SmartHttp.prototype.getheader=fungsi(kunci){
jika(kunci){
if(key.toUpperCase()==SET-COOKIE){
kunci = kunci.ganti(-,/-);
var headers = ini.http.getAllResponseHeaders();
var regexp = RegExp baru(/n + kunci + /:(.+?)/r,ig);
var resstr = ;
while((res = regexp.exec(header))!=null){
var val = res[1].trim();
resstr = resstr + val.substr(0,val.indexOf(;)) + ;
}
jika(ressstr!=){
resstr = resstr.substr(0,resstr.lastIndexOf(;));
}
kembalikan restr;
}kalau tidak{
kembalikan ini.http.getResponseHeader(kunci);
}
}else{kembalikan ini.http.getAllResponseHeaders();}
};
_SmartHttp.prototype.getxml=fungsi(rangkaian karakter){
mencoba{
var _dom = ActiveXObject baru(MSXML2.DOMDocument);
_dom.loadXML(ini.getteks(rangkaian karakter));
kembalikan _dom;
}menangkap(misal){
this.msg = ex.deskripsi;
kembalikan nol;
}
};
_SmartHttp.prototype.getobj = fungsi (){
var b=nol;
var httplist = [MSXML2.serverXMLHttp.3.0,MSXML2.serverXMLHttp,MSXML2.XMLHttp.3.0,MSXML2.XMLHttp,Microsoft.XMLHttp];
for(var i = 0;i<=httplist.length -1;i++){
mencoba{
b= Objek ActiveX baru(httplist[i]);
(fungsi(o){
_SmartHttp.prototype.getobj = function(){mengembalikan ActiveXObject(o)} baru;
})(httpdaftar[i]);
kembali b;
}menangkap(misal){
eval(ini.pesan = ex.deskripsi;);
}
}
kembali b;
};
_SmartHttp.prototype.getrnd = function (){return Math.random().toString().substr(2);};
_SmartHttp.prototype.b2s = fungsi(bytSource, Cset){ //ef bb bf,c0 fd
var Objstream,c1,c2,c3;
var byte;
Objstream =Server.CreateObject(ADODB.Stream);
Objstream.Jenis = 1;
Objstream.Mode = 3;
Objstream.Terbuka();
Objstream.Write(bytSource);
Objstream.Posisi = 0;
Objstream.Jenis = 2;
Objstream.CharSet = Cset;
byts = Objstream.ReadText();
Objstream.Tutup();
Objstream = nol;
kembalikan byte;
};
_SmartHttp.prototype.urlencode=function(str){ return encodeURIComponent(str);};
_SmartHttp.prototype.urldecode=fungsi(str){ return decodeURIComponent(str);};
String.prototype.trim = function(){kembalikan ini.replace(/(^(/s+)|(/s+)$)/igm,);};
</skrip>
Gunakan kode:
Copy kode kodenya sebagai berikut:
<!--#termasuk file=smart.asp-->
<%
Respon.charset=utf-8
url redup, metode, data, rangkaian karakter
url =Permintaan.Formulir(targeturl)
metode =Permintaan.Formulir(metode)
data =Permintaan.Formulir(data)
charset = Permintaan.Formulir(charset)
jika rangkaian karakter = maka rangkaian karakter = GB2312
respon.Tulis SmartHttp(url,metode,data).send().gettext(charset)
atur http saya = tidak ada
%>