2013-01-12 14 views
8

私は私のiPhoneアプリからのログイン(単純なユーザー名とパスワード)のために、私の同僚のサイトにフォームデータをPOSTしようとしています。しかし、投稿するにはCSRFトークンが必要です。私はこれに関する多くの研究を行ってきました.GETリクエストを使用してcsrftoken cookie(私はここでそれを読んでいます:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/)からこのトークンを得ることができます。問題は、私はこのGETリクエストと正確に何が関係しているのか分かりません。私はどこから手を出すのですか?ここで iOSでCSRFトークンを取得する方法は?

は、これまでの私のポストの要求のためのコードです:私はStackOverflowの上でこれに似た記事がたくさんいることを知っている

NSURL *url = [NSURL URLWithString:SERVER_ADDRESS]; 
NSData* postData= //Some form data 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:[NSString stringWithFormat:@"%d", postData.length] forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 

[request addValue:token forHTTPHeaderField:@"X-CSRFToken"]; //Where do I get this token from 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request 
                   delegate:self]; 
[connection start]; 

が、私は完全に思える答えをいずれかを発見していません。通常は、AJAX関連の情報でのみ満たされている上記のリンクに私を誘導します。助けていただければ幸いです!

+1

csrfトークンはクッキー内にあり、デフォルトでは同じセッションで同じビューに対して受信される 'csrftoken'があります。このCookieを取得するには、送信する前に別のリクエストを行う必要があります。 – SingleNegationElimination

+1

この問題の解決策を見つけましたか? –

+1

あなたのバディのウェブサイトにあるフォームには、フォームにトークンが含まれている必要があります。サイト上の任意のフォームからhtmlを解析できます。それ以外の場合は、サイトにcsrfトークンを表示するページを作成するように依頼してください。 – gcdev

答えて

0

コメントで指摘したように、あなたの友人のウェブサイトのフォームを含むページから解析することができます。あなたは/ios/

ios.htmlでこのテンプレートをレンダリングするために彼を求めるあなた自身のための1つの場合

:起動後

{% csrftoken %} 

あなたがしてトークンの値を解析することができます2 GET request:正規表現:

NSString *regex = @"csrfmiddlewaretoken\".*?\"\(.*?\)\""; 

最後に、X-CSRFTokenの値をfolloに設定する必要がありますwing HTTP POSTリクエスト。

+0

クッキーをつかむのはどうですか? –

0

トークンを使用してログインするには(もちろん)、最初にCSRFトークンを取得する必要があります。 (POSTをフォローアップする前に)ログインページを最初にGETした場合、ログインページの結果はcsrf_tokenを返します。これはブラウザを使用している場合に表示されます。応答内容の下のネットワークペインで、サーバーによって設定されたcsrftoken Cookieを確認します。私の場合:ログイン/パスワード情報を使用してPOSTで

X-CSRFToken: "PgQEgY3LAynbVeWRIzXoo2VFRLfd8Uqt" 

Set-Cookie:csrftoken=PgQEgY3LAynbVeWRIzXoo2VFRLfd8Uqt; expires=Fri, 10-Nov-2017 18:59:54 GMT; Max-Age=31449600; Path=/; secure 

応答のうち、これを解析した後、のようなヘッダを設定します。 HTH

関連する問題