0

更新: Rob のおかげで、iOS Safari にアドレスを入力するだけでサーバーがクエリ文字列パラメーターを認識しないことも発見しました (ただし、Chrome Mac OS は正常に動作します)。結局のところ、サーバー側で何かおかしくなっているようです。


次のコードがリクエストのクエリ文字列セクションを送信しないという奇妙な問題が発生しています。$_SERVER['QUERY_STRING']サーバー側にログオンすると、空白になります。ただし、ブラウザに URL を入力するだけで、サーバーは正しくログに記録します。

また、奇妙なことNSURLに、ログに記録するとクエリ文字列が正常に検出[nsurl query]されるため、問題はまたはのいずれNSURLConnectionかにあるようNSURLRequestです。

NSString* queryString = [self.appDelegate.connections componentsJoinedByString:@"|"];
NSString* url = [NSString stringWithFormat:@"http://mysite.com/?%@&isajax=1", queryString];
NSLog(@"url: %@", url); // http://mysite.com/?test&isajax=1

NSURL* nsurl = [NSURL URLWithString:url];
NSLog(@"nsurl: %@", [nsurl query]); // test&isajax=1

NSURLRequest *request = [NSURLRequest requestWithURL:nsurl];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^( NSURLResponse* response, NSData* responseData, NSError* error ) {
    // returns the page as if no query string were present at all
}];

ファイル名がないことと関係があるのか​​ 疑問に思っています。多分NSURLConnectionそれは好きではありません。編集:いいえ、それとは何の関係もありません。試し/index.php?test&isajax=1てもダメ。

4

2 に答える 2

0

この回答によると、問題はNSURLConnection電話ではなく、サーバー側での mod-rewrite の使用にあることが判明しました。url パラメーターは明示的に一致していないため、PHP によってクエリ パラメーターとして解釈されて$_SERVER['REQUEST_URI']$_SERVER['HTTP_REFERER']ませんでし$_SERVER['QUERY_STRING']た。Chrome がこれをどのように回避していたのか、私にはわかりません。

私の解決策は、深刻な苦痛である mod-rewrite を心配するREQUEST_URI代わりに、 の代わりにチェックすることです。QUERY_STRING;)

于 2013-07-29T23:41:37.333 に答える