9

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

これまでの投稿リクエストのコードは次のとおりです。

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];

StackOverflow にこれと同様の投稿がたくさんあることは知っていますが、完全と思われる回答を見つけたものはありません。通常、AJAX 関連の情報のみが記載された上記のリンクに誘導されます。助けていただければ幸いです。

4

2 に答える 2

0

コメントで指摘されているように、友人の Web サイトのフォームを含む任意のページから解析できます。

自分用のテンプレートが必要な場合は、次の場所でこのテンプレートをレンダリングするように彼に依頼してください。/ios/

ios.html:

{% csrftoken %}

次に、GET リクエストを起動します。 2 正規表現を使用してトークンの値を解析できます。

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

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

于 2015-05-24T07:37:39.820 に答える