首页 文章

从JSON属性加载HTML img元素的图像,而URL不能直接访问

提问于
浏览
1

好的,这个解释起来相当复杂,这解释了详细的 Headers :在我的Objective C应用程序中,我生成一个JSON字符串来保存我需要在wikitude SDK的ARchitect浏览器中绘制的对象的所有属性(目前为止)据我所知,Wikitude SDK只处理JSON):

NSString *javaScript = [self convertPoiModelToJson:self.poiData.pois];
NSString *javaScriptToCall = [NSString stringWithFormat:@"newData('%@')", javaScript];

我感兴趣的一个特定对象存储为该JSON字符串中的字符串,它是图像的URL . 但是,此图像位于我们的网络服务器上的密码保护区域后面,应用程序处理身份验证 .

问题开始于我在ARchitect浏览器中,它基本上是一个.html文件,调用特定的wikitude javascript函数来构建增强现实世界并在应用程序的UIWebView中显示它 . 我想在页脚弹出窗口中单击增强视图中的POI时显示该图像,该弹出窗口是一个基本的html div容器 . 所以现在我有一个Web服务器上的图像资源的URL,我无法直接访问它

document.getElementById("thumb").src = jsonObject.thumbUrl;

因为需要身份验证,并且我成功加载该图像的唯一方法是通过 var poiImage = new AR.ImageResource(jsonObject[i].iconURL, {onError: errorLoadingImage}); 方法但是我只能在增强视图中显示它而不是在页脚中显示它 .

我尝试了从Web中的其他图像提供静态字符串或者向视图中的页脚部分中的img元素提供本地资源而没有这样的问题: document.getElementById("thumb").src="marker.png"; 它工作正常,图像也在扩充中正确加载视图 .

我已经阅读了关于在base64中对图像进行编码(我可以在应用程序的目标c部分中访问和下载)并将该字符串存储在另外的JSON属性中以将其加载到html img元素的src属性中,其中包含 <img src="data:image/png;base64,BASE&$_ENCODED_DATA"></img> 但是对于我试图完成的事情,这似乎是一个非常肮脏和过于不切实际的解决方法/黑客攻击 . 另外,我不想开始阅读如何实现身份验证以在Web服务器的受保护区域中访问该图像,或者更开始实现丑陋的base64编码或继续搜索备选方案 .

我不是要求解决方案,而是建议我有什么可能来访问该图像 . 由于我的想法用完了,所以对任何帮助表示赞赏 .

谢谢!

简短的摘要:

  • 图像可访问并在目标c部分下载
    可以使用wikitude SDK的AR.ImageResource方法访问
  • image(但不需要)
    无法通过javascript中的url直接访问
  • image,因为需要进行身份验证

(我希望我的问题是可以理解的,随意问一下,如果有些事情不清楚,特别是因为英语不是我的第一语言,用德语解释这个问题会很复杂 . )

3 回答

  • 1

    您是否尝试在Objective-C / Cocoa中下载图像,将其本地存储在iOS设备上并通过JSON将图像的本地路径传递到您的Architect World?

    然后,您可以使用 AR.ImageResouce 和div容器加载本 Map 像 .

  • 1

    好吧,让我们考虑一下这个,因为它似乎是一个很好的混乱 .

    如果我很了解你的问题,那就是你的javascript代码需要到达图片所在的网址,因为该地方需要某种验证才能访问 .

    在这种情况下,我会寻找将图像移动到受限制站点之外的位置 . 也许试图将它们从Objective-C部分保存到一个公共场所,'s reachable by javascript. This may be tricky as the I/O operation could slow your code execution... Of course you' ll总是可以选择将这些图像移到限制区域之外,但我认为这是不可行的,因为你可以自己调整解决方案 .

    其他方式...如果你的环境配置允许它(我担心没有't enough info about it on the question) is to try to execute your javascript part (I wonder if it' s包含在从网络服务器执行的网页中),用户具有进入限制区域的权限 . 当然,这可能完全是禁止的,这取决于您的javascript部分的作用以及为什么您的受限区域受到验证的保护 .

    如果您不想移出文件,暂时复制它们会产生性能问题和错误,并且通过javascript执行用户进行用户模拟不是一种选择我担心您的唯一选择是有效地尝试传递二进制数据流通过JSON字符串的图像...脏...

  • 1

    看起来wikitude维护着2个浏览器上下文:加载HTML的主机浏览器和嵌入式浏览器类对象(或iframe或代理服务器)由UIWebView实例表示 .

    只有其中一个(不清楚您的讨论中)有用户/通行证才能访问您的图像 . 您需要调用某些内容来重复身份验证步骤或将凭据传输到其他上下文 .

相关问题