ホームページ > ウェブフロントエンド > jsチュートリアル > JQuery とサーブレットを使用してクロスドメイン送信リクエストを実装する例 Sharing_jquery

JQuery とサーブレットを使用してクロスドメイン送信リクエストを実装する例 Sharing_jquery

WBOY
リリース: 2016-05-16 17:00:40
オリジナル
962 人が閲覧しました

原則: JavaScript の Ajax はドメインを越えることはできませんが、リクエストをローカルのサーブレットに送信することでクロスドメインを完了できます。次に、リモート構造をクライアントに返します。これにより、Ajax はドメイン間で動作できるようになります。後ほどPHP版をリリースする予定ですので、ご注目ください。以下はコードです

JS コード:

注: Post モードでは、param1 と param2 はリモートに送信されるパラメータ値であり、複数存在する可能性があります。

コードをコピー コードは次のとおりです。

//GET メソッド
function reqeustCrossDomainProxyGet (){
var url = "http://www.baidu.com";//リモートリクエストアドレス
var param = {'requesturl':url,'typedata':'JSON'};
var data = getCrossDomainProxyRemote(param,"json");
}
//Post メソッド
function reqeustCrossDomainProxyPost(param1,param2){
var url = apiServer "/api/lucene/query" ;
var param = {'requesturl':url,'typedata':'JSON','param1':param1,'param2':param2};
var data = getCrossDomainProxyRemote(param,"json");
}

/**
* JS は、リモート リクエストに関連するすべてのパラメーターを使用して、このアドレスのサーブレットに POST リクエストを送信します。
* ここで POST メソッドを使用してサーブレットに送信します
* @param param リモート リクエスト パラメーター
* @param rtype JS 戻り値の型 (まだ使用されていません)
* @return
*/
function getCrossDomainProxyRemote(param,rtype){
var url = "/cross/proxy";//サーブレットの URL アドレス
var returndata;
$ .ajax({
url: url,type: 'POST',dataType: rtype, timeout: 40000,data:param, async:false,
error: function(response,error) {alert(response.status) );},
成功: function(data){returndata=data;}
});
return returndata;
}

Java コード:

コードをコピー コードは次のとおりです:

public class CorssDomainProxy extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(re q, resp);
}

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
boolean requestType = false;//リモート要求タイプをマークします。デフォルトは GET メソッドです
PrintWriter out = resp.getWriter();
列挙キー = req.getParameterNames();//クライアントによって渡されたすべてのパラメータ名を取得します
ArrayList params = new ArrayList();
文字列 url=null;
while (keys.hasMoreElements()){
文字列 key = (文字列) key.nextElement();
/**
* リクエストパラメータに以下の式が含まれる場合、このパラメータはリモートリクエストに参加しません
*/
if(key .equals("requesturl")){//パラメータがリモート リクエスト アドレスであるかどうかを判断します
url = req.getParameter(key);
}else if(key.equals("typedata")){/ /リクエストのデータ型を判断します。当面は使用されません。

}else if(key.equals("returntype")){//リクエストの戻り値の型を決定します。当面は使用されません。

}else{
Params.add (key); // 他の追加パラメータのリスト。リモート リクエストに参加するパラメータは次のとおりです。
RequestType = TRUE; // マークを変更します。 post method
}
}}

HttpClient client = new HttpClient();
HttpMethod method = null;
if(requestType){// リクエスト メソッドを決定し、 HttpMethod object, true:POST, false:GET
Method = new UTF8PostMethod(url);
for(String name: params){//POST パラメータを繰り返し、リクエストに追加します
String _value = req.getParameter(name);
((PostMethod )method).setParameter(name,_value);
meth);//実行リクエスト
String bodystr = method.getResponseBodyAsString();//Return the result
out.println(bodystr);///結果をクライアントに返す
*/
private static class UTF8PostMethod extends PostMethod {
public UTF8PostMethod(String url) {
super (url);
}
@Override
public String getRequestCharSet() {
return "UTF-8";
}

}
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート