天天看點

前端備忘

1. 為簡單的滿足分布式需求,用Cookie而不用Session。

     谷歌登入JD.COM,IE通路還需要登入嗎?

     --由于不同的浏覽器儲存 Cookie 的方式也不同,是以同一台計算機上的不同浏覽器不一定能夠互相讀取各自的 Cookie。

     登入網站後,将cookie從目前電腦複制到另一台電腦,用同樣的浏覽器打開網站,需要重新登入嗎?

     --原理上可以

     如何實作基于cookie的單點登入?跨域問題

     --一個站點登入後往其他站點寫cookie,利用jsonp傳參

 2. 獲得移動端的登入資訊可以用Cookie。

 3. ajax調用跨域處理:

前端備忘

response.setHeader("Access-Control-Allow-Origin","http://m.architectj.com/");//"*"允許所有域名  

response.setHeader("Access-Control-Allow-Credentials", "true");  

response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");  

 4. request.getHeader("Referer")的作用

前端備忘

1,防止盜連,比如我是個下載下傳軟體的網站,在下載下傳頁面我先用referer來判斷上一頁面是不是自己網站,如果不是,說明有人盜連了你的下載下傳位址。  

2,電子商務網站的安全,我在送出信用卡等重要資訊的頁面用referer來判斷上一頁是不是自己的網站,如果不是,可能是黑客用自己寫的一個表單,來送出,為了能跳過你上一頁裡的javascript的驗證等目的。  

使用referer的注意事項:  

如果我是直接在浏覽器裡輸入有referer的頁面,傳回是null(jsp),也就是說referer隻有從别的頁面點選連接配接來到這頁的才會有内容。  

我做了個實驗,比如我的referer代碼在a.jsp中,它的上一頁面是b.htm,c.htm是一個帶有iframe的頁面,它把a.jsp嵌在iframe裡了。我在浏覽器裡輸入b.htm的位址,然後點選連接配接去c.htm,那顯示的結果是b.htm,如果我在浏覽器裡直接輸入的是c.htm那顯示的是c.htm  

前端備忘

/** 

 * 校驗來源為qwexyz域 

 * @param refer 

 * @return 

 */  

public static boolean checkRefer(String refer) {  

    int start = refer.indexOf("//");  

    if (start != -1 && refer.length() > start + 2) {  

        refer = refer.substring(start + 2);  

        int end  = refer.indexOf("/");  

        if (end != -1) {  

            refer = refer.substring(0, end);  

            if (refer.endsWith("qwexyz.com")) {  

                return true;  

            }  

        }  

    }  

    return false;  

}  

 * 過濾回調函數 

 * @param callback 

public static String filter(String callback) {  

    if (callback == null || "".equals(callback)) {  

        return "";  

    if (callback.length() > 30) {  

        callback = callback.substring(0,30);  

    callback = callback.replaceAll("[^\\w\\_\\.]"," ");  

    return callback;  

 5. jsonp解決跨域通路

前端備忘

傳統的ajax ,往往是 XMLHttpRequest ,讀取一個接口,傳回類似: {“Name”: “小明”, “Rank”: 7} json值。一般我們都采用xmlhttprequest方法通過狀态判斷執行請求是否完畢。  

JSONP的使用模式裡,該URL回傳的是由自定義傳入函數名,動态生成JSON作為該函數入參,這就是JSONP 的“填充(padding)”或是“前辍(prefix)”的由來。  

請求:  

<script type="text/javascript"  

         src="http://www.example.com/RetrieveUser?UserId=1823&callback=parseResponse">  

     </script>  

傳回:  

parseResponse({"Name": "Cheeso", "Id" : 1823, "Rank": 7})  

這個充分展現了js作為<strong>動态語言</strong>的特性。  

 6. 清除緩存

前端備忘

response.setHeader("Pragma", "No-cache");  

response.setDateHeader("Expires", -1);  

response.setHeader("Cache-Control", "no-cache,no-store");  

 7. 為了保持和線上位址一緻,本地測試時,配上正式域名指向127.0.0.1

原文連結:[http://wely.iteye.com/blog/2281172]

上一篇: shell變量