談CSRF與JSONP設置header問題


關於前端發起請求

問題一 JS發起請求的方式

方法一
JS代碼中發起請求的方式普遍為AJAX

該技術在 1998 年前后得到了應用。允許客戶端腳本發送HTTP請求(XMLHTTP)

方法二
script標簽請求

方法三
通過HTML的方法
通過js自動在jsp中創建一個form表單,並給其method屬性為post

function post(URL, PARAMS) {        
    var temp = document.createElement("form");        
    temp.action = URL;        
    temp.method = "post";        
    temp.style.display = "none";        
    for (var x in PARAMS) {        
        var opt = document.createElement("textarea");        
        opt.name = x;        
        opt.value = PARAMS[x];               
        temp.appendChild(opt);        
    }        
    document.body.appendChild(temp);        
    temp.submit();        
    return temp;        
}        

$(".submit_d a").click(function(){
	var data = ($(this).attr("class")).split("-");
	var series = data[0];
	var discharge = data[1];
	var carriageNum = data[2];
	var seatNum = data[3];
	var gear = data[4];
	var cost = data[5];
	var pictureUrl = data[6];
	var id = data[7];
	post(ctx+"/order/rentcar.action",{"series":series,"discharge":discharge,"carriageNum":carriageNum,"seatNum":seatNum,"gear":gear,"cost":cost,"pictureUrl":pictureUrl,"id":id});
});

問題二 設置header、cookie

CSRF發起的請求可以設置cookie(token)、header么

CSRF或者jsonp,利用時需要跨域。

跨域首先排除掉AJAX方法

AJAX如何跨域

  1. CORS
    簡單來說,請求時瀏覽器檢測到跨域,會帶上Origin,得到服務器的准許后才能夠獲取數據。
    CORS不僅設置了AJAX跨域時的域名,還有請求方法、返回Header獲取字段、允許發送cookie等
    瀏覽器同源政策及其規避方法(阮一峰)
    CORS需要大多數情況下,前端是無感知的,這是后端服務器做的部分。
  2. JSONP
    JSONP能夠跨域的原因在於


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM