3

在我的 apache 中,配置文件如下所示:

RewriteCond %{HTTP_REFERER} !^mysite.com [NC]

我构建了一个 iphone 和 ipad 应用程序,并在其中放置了一个 safari 浏览器。

如何允许应用程序的 Safari 浏览器(仅限我创建的应用程序)访问图像?

4

2 回答 2

2

如果您使用的是 iOS UIWebView,这可能是一个解决方案:

您可以通过在应用启动时运行一次此代码来更改 WebView 发送的默认用户代理(这里我们将其更改为“UniqueAppUserAgent”)

NSDictionary *dictionnary = [NSDictionary dictionaryWithObjectsAndKeys:@"UniqueAppUserAgent", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];  

然后使用 %{HTTP_USER_AGENT} 作为你的条件

RewriteCond %{HTTP_USER_AGENT} UniqueAppUserAgent
于 2012-05-31T23:36:57.997 回答
2

如果我正确理解您正在尝试做什么,您想从您的应用程序中发送一个请求并指定一个 HTTP_REFERER 以便激活您的 apache 规则。

您可以通过将 HTTP 请求拆分到您的服务器并在您的应用程序内显示 HTML 来做到这一点。IE,

  1. 使用NSURLConnection;从服务器中获取 HTML 你可以在网上找到很多使用它的例子,在这里我只想指出你可以为你的请求指定一个自定义标头,如下所示:

     NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:url] autorelease];
     [request setValue:@"mySite.com" forHTTPHeaderField:@"HTTP_REFERER"];
    
  2. 一次,您从请求中获取 HTML,然后使用以下命令将其加载到 UIWebView 中 - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

    [webView loadHTMLString:myHtml baseURL:nil];
    

如果您提供您拥有的代码,无论如何,它会更容易提供帮助。

于 2012-06-02T08:06:10.123 回答