ajax跨域post請求的java代理實現
最近開發的專案有個功能的需求如下:根據使用者提供的外部連結(outter_url),在頁面填寫好查詢條件(param)並向該url發起查詢請求,查詢返回的資料來動態生成html的table來顯示資料,同時要求請求的方法是post請求。
在開發過程中用的是jquery的非同步請求。問題出現了,網上搜了半天沒有發現實現jquery跨域進行post請求的解決方案(貌似不支援),所以自己用java程式碼來發起post跨域請求
關於實現思路的幾點說明:
1) 專案中用的是spring,所以這個請求是在spring某個controller的方法中實現的,為了方便說明問題該方法假設為(ajaxProxy)
2) 在jsp頁面中通過jquery的ajax方法,發起一個請求,該請求的url對映到1)中所說的那個ajaxProxy方法,並把查詢條件(param)一起傳遞到ajaxProxy方法.部分程式碼如下
$.ajax({ type : "GET", //對映到controller對應方法的url url : "<c:url value='/user/put/queryItems'/>", //查詢條件資料 data : param, dataType : 'json', success : function(data) {//動態生成table,程式碼略}
3) 在ajaxProxy方法中,用HttpURLConnection連結outter_url,並設定connection的請求方法為Post,併發送查詢條件(param),該部分的程式碼實現如下:
URL connect = new URL(outer_url); HttpURLConnection connection =(HttpURLConnection)connect.openConnection(); Connection.setRequestMethod(“Post”); //傳送查詢條件 OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); out.wirte(param); out.flush();
4) 接收資料並返回資料,jsp頁面中ajax的success方法處理接收到的資料data,並把data返回就可以了,接收資料的程式碼如下
StringBuffer data = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "gb2312"));
String line;
while ((line = reader.readLine()) != null) {
data.append(line);
}
return data;
綜上所述,實現跨域post請求的java實現程式碼如下
@RequestMapping("queryItems")
public @ResponseBody
String ajaxProxy(String name, String startTime, String endTime,
String tag, Model m, HttpServletRequest req) throws UnsupportedEncodingException {
//拼接查詢條件,組成json格式的資料傳送
JSONObject node = new JSONObject();
try {
JSONObject param = new JSONObject();
param.put("type", "");
param.put("typevalue", "");
//param.put("key", name);
param.put("key", new String(name.toString().getBytes("utf-8"), "gbk"));
param.put("start_time", startTime);
param.put("end_time", endTime);
param.put("tags", tag);
node.put("param", param);
JSONObject user = new JSONObject();
user.put("userid", "123");
node.put("user", user);
JSONObject device = new JSONObject();
device.put("dnum", "123");
node.put("device", device);
JSONObject developer = new JSONObject();
developer.put("apikey", "******");
developer.put("secretkey", "*****");
node.put("developer", developer);
node.put("action", action);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// 使用POST方式向目的伺服器傳送請求
URL connect;
StringBuffer data = new StringBuffer();
try {
connect = new URL("outter_url");
HttpURLConnection connection = (HttpURLConnection)connect.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
OutputStreamWriter paramout = new OutputStreamWriter(
connection.getOutputStream(),"UTF-8");
paramout.write(json);
paramout.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream(), "gb2312"));
String line;
while ((line = reader.readLine()) != null) {
data.append(line);
}
paramout.close();
reader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return data.toString();
}
相關推薦
ajax跨域post請求的java代理實現
最近開發的專案有個功能的需求如下:根據使用者提供的外部連結(outter_url),在頁面填寫好查詢條件(param)並向該url發起查詢請求,查詢返回的資料來動態生成html的table來顯示資料,同時要求請求的方法是post請求。 在開發過程中用的是jquery
jQuery jsonp跨域請求 ajax跨域之---伺服器端代理實現
ajax跨域之---伺服器端代理實現 https://www.cnblogs.com/lydialee/p/4869145.html 來源 https://www.cnblogs.com/chiangchou/p/jsonp.html
ajax跨域post請求
為什麼會出現跨域問題? 首先我們要先了解一個概念--同源策略。同源策略,它是由Netscape提出的一個著名的安全策略。現在所有支援JavaScript 的瀏覽器都會使用這個策略。所謂同源是指,域名,協議,埠相同。目的是出於安全考慮,防止js指令碼隨意呼叫其他網站的資源。
SpringBoot專案ajax 跨域post請求問題的完美解決方式(詳細步
最近專案上不是很緊,想利用這段時間學學Es6的新特性,今天正好學到ES6為了解決js“回撥地獄”問題出的Promise新物件。於是就使用以前寫的SpringBoot專案做後臺,前臺就新寫一個HTML檔案。前後臺都準備好了,就著手準備用ajax試試看介面可不可以走通,於是本次文
ajax跨域之---伺服器端代理實現
介紹一種不是通過js實現跨域的方式: 通過伺服器端代理實現。 具體的思路:由於瀏覽器有同源策略限制,(同源策略即:https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy),所以想要跨域訪問其他域下的資源,需要繞開瀏
解決ajax跨域的辦法,代理,cors,jsonp
resource 通過 使用 -o 參考 acc log 方式 sha 1、使用php做代理去請求第三方api接口 php是可以跨域的,我們利用ajax請求本域名中的php文件,php再去請求第三方接口文件,從而達到跨域目的。 php做代理請求: aj
ajax跨域簡單請求和複雜請求
1. 簡單請求: 滿足一下兩個條件的請求。 (1) 請求方法是以下三種方法之一: HEAD GET POST (2)HTTP的頭資訊不超出以下幾種欄位: Accept Accept-Language Content-Language Last-Event-ID
vue-resource 跨域 post請求詳解
vue-resource 跨域 post請求時,需要後端工程師配合設定 Access-Control-Allow-Origin 為 * 在使用之前要下載和引入:cnpm install vue-resource --save //這裡我使用的是淘寶的cn
關於Ajax跨域以及Nginx反向代理的一個坑
之前專案中各種視訊播放出現問題,原因有好多,包括客戶端播放器邏輯,Android系統播放器的坑爹bug,CDN,以及視訊源的壓縮處理不當等等。 然而,關於視訊源壓縮處理,我前段時間樣衰衰,主動提出要搞一套自己伺服器的轉壓工具,代替現有的視訊製作部門使用的“狸窩”~(這個
React 採用Fetch方式傳送跨域POST請求
主實現類: import fetch from ‘isomorphic-fetch’; export default async function post(url,method,params)
轉載: React Native 採用Fetch方式傳送跨域POST請求
關於跨域: A上的頁面獲取B上的資源,瀏覽器會檢查伺服器B的HTTP頭(HEAD請求),如果Access-Control-Allow-Origin中有A,或者是萬用字元*,瀏覽器就會允許跨域。這叫CORS, 還有一點比較重要,限制跨域是瀏覽器的行為,而不是JS的行
React Native 採用Fetch方式傳送跨域POST請求
Fetch以後是趨勢,勢必要取代傳統的Ajax,而且RN框架支援Fetch。下面僅做了一個跨域請求的例子,在本域請求是一樣的,而且更簡單一些。客戶端環境用的是RN寫的一個頁面,也可以用瀏覽器的console控制檯模擬。後端服務用的是NodeJs express框架。
ajax跨域簡單請求與複雜請求
開發網站時經常會用到跨域資源共享(簡稱cors,後面使用簡稱)來解決跨域問題,但是在使用cors的時候,http請求會被劃分為兩類,簡單請求和複雜請求,而這兩種請求的區別主要在於是否會觸發cors預檢請求。 首先我們要明白cors的原理(引自MDN): 跨域資源共享標準新增了一組 HTTP 首部欄位,允許伺服
ajax跨域請求簡單實現Java後臺
因為官網有一個合作加盟的功能,需要一個表單錄入,但是官網除了這個功能,都是靜態頁面,所以就準備寫一個ajax跨域,儲存到之前公司專案的後臺管理系統去,第一次用ajax跨域,網上很多參考。這也是我的第一篇博文,準備以後養成這個習慣,以備後期參考。。。。。 通過自己N久找程式碼
ajax跨域之---服務器端代理實現
通過 str 分享 介紹 hello js實現 pre ucc ref 介紹一種不是通過js實現跨域的方式: 通過服務器端代理實現。 具體的思路:由於瀏覽器有同源策略限制,(同源策略即:https://developer.mozilla.org/zh-CN/docs/Web
java Ajax跨域請求COOKIE無法帶上的解決辦法
coo $.ajax test style dem log json bsp ros 1.web.xml加入以下節點,,一定放在第一個filter <!--目錄下所有文件可以跨域Begin--> <filter> <filter-
nginx 實現 ajax 跨域請求
ini syn methods acc -m www eth tran 響應 原文:http://www.nginx.cn/4314.html AJAX從一個域請求另一個域會有跨域的問題。那麽如何在nginx上實現ajax跨域請求呢?要在nginx上啟用跨域
WebAPI Ajax 跨域請求解決方法(CORS實現)
custom XML header 就會 情況 取數 -o cross serve 概述 ASP.NET Web API 的好用使用過的都知道,沒有復雜的配置文件,一個簡單的ApiController加上需要的Action就能工作。 但是在使用API的時候總會遇到跨
AJAX跨域訪問(get、post請求)
1、JSONP實現跨域get請求(無論請求方式是get,post或者是put等別的請求,最終都會被預設以get請求傳送) <script type="text/javascript"> $.ajax({ url:"http://crossdomain.
利用原生js實現ajax跨域請求資料
首先,頁面中不需要引入任何的檔案。 1、前臺html頁面 <script> //定義一個ajax var $ = { ajax:function(option){ var url = option.url; var ca