私はcsrftoken検証が必要なアプリを開発中です。私は各リクエストでクッキーを受け取り、リクエストごとにクッキーをもう一度返します。 csrf検証が必要なリクエストは以下のとおりです。私はcsrfをヘッダとクッキーにlocalcontextを使って送ります。しかし、私はTypeerrorを取得しています。詳細エラーは以下のとおりです。ヘッダーにcsrftokenのみを送信しているときと同じですが、リクエストがあるCookieがないと、403forbidden csrf検証に失敗しました。タイプエラーアンドロイドでのcsrf検証のタイプエラー
public JSONArray getLinkFromUrl(String url, List<NameValuePair> param) throws IOException {
// Making HTTP request
DefaultHttpClient httpClient = new DefaultHttpClient();
Log.d("ADebugTag", "url: "+url);
Log.d("ADebugTag", "csrfToken: " + PrefManager.csrfToken);
Log.d("ADebugTag", "Domain: " + PrefManager.domain);
try {
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(param));
// httpPost.setHeader("Referer", url);
httpPost.setHeader("X-CSRFToken", PrefManager.csrfToken);
final BasicCookieStore cookieStore = new BasicCookieStore();
for (Cookie cookie: PrefManager.cookies) {
cookieStore.addCookie(cookie);
Log.d("ADebugTag", "cookie: " + cookie.toString());
}
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpResponse response = httpClient.execute(httpPost,localContext);
HttpEntity httpEntity = response.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
.....私はTFO問題を解決してください
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>TypeError at /m/payment</title>
<style type="text/css">
html * { padding:0; margin:0; }
body * { padding:10px 20px; } </style>
<script type="text/javascript">
//<!--
function getElementsByClassName(oElm, strTagName, strClassName){
// Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com
var arrElements = (strTagName == "*" && document.all)? document.all :
oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
strClassName = strClassName.replace(/\-/g, "\-");
var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
var oElement;
for(var i=0; i<arrElements.length; i++){
oElement = arrElements[i];
if(oRegExp.test(oElement.className)){
arrReturnElements.push(oElement);
}
}
return (arrReturnElements)
値:[USER_ID = 8、trxn_type = FP、subtrxn_type = N、スキーム= [{ "scheme_code ":2390、" 量」:5000}]、SESSION_KEY = 0j467lrxgi8o1yhdcgnduc4czmoiyses]
クッキー:[バージョン:0] [名:csrftoken] [値:O1xARAJ0ISMPeHId56Bk2boYW0XoKvwJ] [ドメイン:......] [パス: null] [有効期限:null]