我知道在JavaScript中进行AJAX调用时,您可以非常轻松地设置HTTP请求标头.
但是,通过脚本将iframe插入页面时,是否也可以设置自定义HTTP请求标头?
<iframe src="someURL"> <!-- is there any place to set headers in this? -->
Run Code Online (Sandbox Code Playgroud) 一般来说,我反对使用iframe,但它解决了我的一个特殊问题.
问题是我在一个网页上有一个tinyMCE编辑器.在用户使用此编辑器制作内容之后,内容将作为HTML发送到Web应用程序.然后,此内容将显示在div中.事实上,tinyMCE经常添加具有绝对位置的样式以及与Web应用程序的其余部分分离的内容.
在测试时我发现新的HTML 5 iframe srcdoc="<p>Some HTML</p>"并且seamless="true"非常适合我的情况.它看起来很无缝,内容风格和我的风格完好无损.遗憾的是,我现在看到Android尚不支持HTML5 srcdoc属性(http://w3schools.com/html5/tryit.asp?filename=tryhtml5_iframe_srcdoc在chrome和android浏览器中产生不同的结果).
所以问题是:是否有任何替代iframe srcdoc将保留所有接收内容的样式并将其包含在div中?
我有一个网站,提示用户从外部资源下载文件.由于外部文件名被散列并且用户下载了多个文件,因此用户很难知道他们下载的文件到达了他们请求的资源.例如,文件名fdae442dafe42.zip可以是production-resources.zip.
我正在寻找方法,以便浏览器将文件作为一个不同的名称下载.以下是我的一些想法以及为什么它们不起作用,但您可以找到解决方法.
请注意,我对外部资源没有任何控制权.我将无法更改标题或其他任何内容.我的服务是一个主要针对桌面用户的网站.Android和iOS解决方案不会那么有用.
下载属性
这种方法在谷歌Chrome和Firefox中运行了一段时间,但随后他们开始遵循W3 HTML5规范.外部资源需要发送Content-Disposition之前谷歌浏览器和Firefox未检查过的标题.
PHP代理下载
我知道我可以让PHP脚本向外部资源发出请求,然后在更改标题和名称以满足我的需求时将其提供给最终用户.问题是网站流量很大,每个用户下载大约1-2GB的数据.我的服务器无法处理这种类型的流量,升级服务器的成本可能太高.
使用外部应用程序重命名文件
我正在考虑使用外部应用程序(可能是Chrome/Firefox扩展程序),它们会在完成下载后重命名这些文件.但考虑到我的观众数量足够大,一次访问者,要求他们下载应用程序或扩展程序是不太可能的.
Flash或Java嵌入式解决方案
我正在考虑使用Java或Flash嵌入式文件来处理文件下载,但我对这两个平台都不太了解.据我所知,Flash对用户的文件系统没有太多控制权,因此这可能是一个问题.Java将能够完成这项任务,但我真的希望我不必使用Java,因为它通常不安全,需要大量下载才能安装它(与外部软件的想法相同).
如果您对我可能采取的措施有什么想法来解决这个问题,我们将不胜感激.我不是在寻找任何代码,只是关于如何完成上述任务的想法.我想感谢你们所有的时间和专业知识.
我在grafana创造了一些漂亮的地块.我想直接在我的网站管理面板中显示其中一些,而不是强迫用户转到grafana仪表板并强制他们进行双重身份验证(一次用于我的网站,一次用于grafana).
一种选择是在grafana中启用匿名访问,并使用grafana中每个图形可用的share/embed iframe选项.虽然它有效,但如果知道相应URL的任何人都可以看到grafana数据,那么这似乎是一个巨大的漏洞.
然后我看到grafana有HTTP API,但我看不到在那里显示某个图表的可能性.
我已经尝试了一个带有PHP代理的解决方案,如果用户在我的网站上进行了身份验证,则会添加授权标头并连接到grafana嵌入URL.但是,它不起作用,这是配置的噩梦.
最后一个选项是从服务器端的grafana获取图形的png,并仅为我网站中经过身份验证的管理员提供服务.然而,在这种情况下,我放弃了所有酷的东西grafana提供OOTB,如扩展/折叠时间范围,自动刷新等.
我迫切需要一些帮助.
我创建了一个非常平行的<script>,并重现了我在其他地方写过的另一个更复杂的<script>的问题.
这是它的作用:
涉及的三个文件是:
这一切都适用于Firefox,Safari和Chrome.它崩溃的地方是Internet Explorer和Opera.会发生什么是main.js中的render()函数执行,并且触发了所有三个警报,但<iframe>中的文档没有被覆盖.我无法分辨出正在创建或写入的文档,或者根本不是.
如果我在render()函数的开头添加调试代码(如console.log(document)),那么工作浏览器似乎可以获得现有<iframe>文档的句柄并列出下面包含的属性.Internet Explorer似乎也可以找到某种文档.我只是不知道为什么不让我覆盖它.
这可能是范围问题吗?也许我不正确地使用document.write(),document.open()或document.close()方法,Firefox和其他一些浏览器只是让我逃脱它?
一个可能的线索:如果我把render()函数的内容拿出来(即,只是把它们放在main.js中的load()之后),这样可以正常工作.这告诉我,我不是如何使用document.open()等,但是在执行callback()函数时,文档对象不可用,或者超出了范围,或类似的东西.
这让我非常难过,这是一个非常重要的项目,即将到期.如果它让我摆脱这种干扰,我不会超越黑客或解决方法.任何帮助或见解都将非常感激!
console.log()的文档属性列表:
ATTRIBUTE_NODE: 2
CDATA_SECTION_NODE: 4
COMMENT_NODE: 8
DOCUMENT_FRAGMENT_NODE: 11
DOCUMENT_NODE: 9
DOCUMENT_POSITION_CONTAINED_BY: 16
DOCUMENT_POSITION_CONTAINS: 8
DOCUMENT_POSITION_DISCONNECTED: 1
DOCUMENT_POSITION_FOLLOWING: 4
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32
DOCUMENT_POSITION_PRECEDING: 2
DOCUMENT_TYPE_NODE: 10
ELEMENT_NODE: 1
ENTITY_NODE: 6
ENTITY_REFERENCE_NODE: 5
NOTATION_NODE: 12
PROCESSING_INSTRUCTION_NODE: 7
TEXT_NODE: 3
URL: "http://localhost/projects/test/ajax_loader/document_write/index.html"
activeElement: HTMLBodyElement
addEventListener: function addEventListener() {
adoptNode: function adoptNode() {
alinkColor: ""
all: HTMLCollection
anchors: HTMLCollection
appendChild: function appendChild() … iframe ×3
javascript ×3
html5 ×2
php ×2
css ×1
document ×1
grafana ×1
graphite ×1
httprequest ×1
scope ×1