亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源軟件測(cè)試解決方案 >
跨域訪問(wèn)的解決方案
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/12 9:23:24 ] 推薦標(biāo)簽:

跨域訪問(wèn)一直是困擾很多開發(fā)者的問(wèn)題之一。因?yàn)樯婕暗桨踩詥?wèn)題,所以跨域訪問(wèn)默認(rèn)是不可以進(jìn)行的,否則假設(shè)我寫了一段js去更改google的圖標(biāo),明天他寫了一段代碼去吧google首頁(yè)的文字全部變成梵文,那還得了?

首先,講下什么是相同的域。域是這樣定義的,協(xié)議名+host名+端口號(hào),只有這3個(gè)都一樣,才能說(shuō)是同樣的域,同樣的域里面的訪問(wèn)不受到同源策略限制,你可以用你的js代碼任意的去操作資源,但是不同域你不能這樣做了。

解決跨域訪問(wèn)有很多方法,常見的一種“單向”跨域訪問(wèn)方式是用JSONP(Json with Padding),它解決思路是如果域A (充當(dāng)客戶端)上的js 要操作域B(充當(dāng)服務(wù)器端)上的資源,那么只要吧域A上的js函數(shù)名傳遞給域B,然后在域B進(jìn)行封裝,它解析來(lái)自域A的函數(shù)名,并且將域B上的資源轉(zhuǎn)為json對(duì)象,并且兩者進(jìn)行組合,組合后的字符串是 域A函數(shù)名(域B json對(duì)象) 這種函數(shù)調(diào)用的形式,然后當(dāng)域A上用script src='#'" >域A函數(shù)名(域B json對(duì)象)的形式,于是達(dá)到了域A函數(shù)處理域B資源的效果。

為了更有說(shuō)服力,我們這里做一個(gè)非常簡(jiǎn)單的實(shí)驗(yàn),假定域A(客戶端)有個(gè)應(yīng)用部署在http://localhost:8180上,域B(服務(wù)器端)有個(gè)應(yīng)用部署在http://localhost:8080上,顯然這2個(gè)域由于端口不同,所以域A如果要訪問(wèn)域B必定是跨域訪問(wèn)的。域A 有一段js函數(shù),域B提供了一個(gè)json對(duì)象,我們想要域A的js函數(shù)操作域B的json對(duì)象。會(huì)怎樣呢?

服務(wù)端(我們部署在http://localhost:8080上):

先貼上域B(服務(wù)器端的代碼),它用一個(gè)java servlet,負(fù)責(zé)接收來(lái)自客戶端的帶回調(diào)函數(shù)名參數(shù)的請(qǐng)求,并且與自己端提供的json對(duì)象包裝,包裝為一個(gè)jsonp后然后放入響應(yīng)輸出流。

    package com.charles.jsonp;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.json.simple.JSONObject;
    
    /**
     * Servlet implementation class JSONPServlet
     */
    public class JSONPServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public JSONPServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            
            //get the callback function which comes from client
            String callbackFuncFromClient= request.getParameter("callbackFunc");
            //create a json object
            JSONObject jsonInfo = new JSONObject();
            jsonInfo.put("name","charles");
            jsonInfo.put("title", "technical lead");
            jsonInfo.put("info","talent man");
            //create a string which stands for a javascript with the format func(jsonobject)
            StringBuffer jsonpString = new StringBuffer();
            jsonpString.append(callbackFuncFromClient).append("(").append(jsonInfo.toJSONString()).append(")");
            
            
            //construct the output jsonp and output to the client
            response.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            out.println(jsonpString);
            out.flush();
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
    }

上一頁(yè)123下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 日韩欧美精品中文字幕 | 看全免费的一级毛片 | 国产真实乱freesex | 人人爽天天碰天天躁夜夜躁 | 免费看欧美一级片 | 亚洲精品成人中文网 | 国产亚洲欧美成人久久片 | 国产高清久久 | 五月婷婷精品 | 中国一级片免费看 | 成人午夜影视全部免费看 | 天天操天天搞 | 亚洲欧美久久婷婷爱综合一区天堂 | 一级做a爰久久毛片武则天 一级做a免费视频 | www.日本视频| 亚洲大片免费观看 | 精品在线小视频 | 国内精品在线观看视频 | 91最新免费地址入口 | 视频三区精品中文字幕 | 无遮挡h肉动漫在线观看日本 | 少妇激情av一区二区 | 大学生高清一级毛片免费 | 国产成人欧美一区二区三区的 | 久久网欧美 | 日韩精品手机在线 | 羞羞网页 | 国产网曝手机视频在线观看 | 91短视频网站 | 天天操夜夜爱 | 99中文字幕在线 | 日韩国产欧美 | 亚洲成人福利网站 | 日本韩国一区二区 | 国产精品福利久久2020 | 国产一线大片免费观看 | 日日摸夜夜添夜夜添影院视频 | 999视频精品全部免费观看 | 免费三级伦理片 | 成人深夜福利视频 | 91久久精一区二区三区大全 |