我一直在寻找拒绝除 POST 之外的所有 HTTP 方法的方法。是的,我意识到这可能不会阻止太多,但我想让它发挥作用。我遇到了一种拒绝使用 .htaccess 文件发布以外的所有内容的方法:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^POST
RewriteRule ^.*$ /home/user/public_html/folder/bad_request.php
现在在我的 iphone 应用程序中,我有以下代码将数据发布到网站:
NSString *post_length = [NSString stringWithFormat:@"%d",[post_data length]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://folder.domain.com/"]];
[request setHTTPMethod:@"POST"];
[request setValue:post_length forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:post_data];
当我使用当前的 .htaccess 运行此代码时,如上所示,我得到 bad_request 页面,就好像我没有发布数据一样,但是如果我将 .htaccess 规则更改为 !^GET 我可以在浏览器中访问它并获得访问权限,但是当我发布时使用 iPhone 代码,我被拒绝了......所以它向后工作。有谁知道为什么它不起作用?