4

我正在和我的客户一起做一个项目,我想在浏览器的单个页面上打开多个网站,为此我使用了这个目的,iframe但是我在 openerp 框架中被卡住了。在iframe我也设置了 openerp 屏幕,但问题是当我创建一个客户时,一旦它到达创建时间,向导就没有打开。

一些代码在这里:

<iframe src="http://localhost:8069" name="mainFrame" >

我想知道一个替代方案<iframe>

4

4 回答 4

4

出于安全原因,在浏览器中通过 javascript 访问多个网站的能力受到严重限制。我将把这种通过 javascript 显示其他网页的想法称为iframe 模仿器。对于这个应用程序,我会设置三类网站:

  1. 主机站点:在主机站点上,可以使用简单的 ajax 请求制作iframe 模仿器。这是孩子的东西。
  2. 第一方站点(主机除外):在您有权访问服务器配置(或至少可以修改标头)的任何站点上,您需要指定标头Access-Control-Allow-Origin: "host site name here"以允许主机站点的访问或Access-Control-Allow-Origin: *允许每个站点的访问。
  3. 第三方站点:在第三方站点上,您必须希望站点的Access-Control-Allow-Origin标题设置为*,否则您需要说服站点的管理员例外并允许您的站点访问。

如果以上条件都不能满足,那么您将受到用户浏览器安全的摆布。有些浏览器支持CORS(跨源资源共享),但并不可靠。通常,用户的浏览器会阻止对某些标头的访问(出于安全原因),但如果浏览器提供支持(或安全性足够松散),则可以设置标头以欺骗其他网站让您访问。请注意(如果允许)有些人可能会考虑这种边缘黑客行为,并且未经所有相关方的许可可能不应该使用它。

$(document).ready(function() {
  var target_domain = "www.web-source.net";
  var protocol = "http://";
  var path = ""; //e.g. "/index.html"
  var target_host = protocol + target_domain;
  var target_URI = target_host + path;
  var method = "GET";
  $.ajax({
    url: target_URI,
    type: method,
    headers: {
      "X-Requested-With": "", //nullifies the default AJAX value of "XMLHttpRequest"
      "Origin": target_host, //lies to the target server
      "Referer": target_host, //lies to the target server
      "X-Http-Method-Override": method, //forces the specified method
    },
    crossDomain: "true" //applies cross domain settings
  });
});
$(document).ajaxSuccess(function() {
  $("#iframe_imitator").html(xhr.responseText);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="iframe_imitator"></div>

于 2015-10-10T02:52:52.413 回答
3

我在这篇文章中找到了这个 - 可能值得一试

使用 HTML5 替代 iFrame

<object data="http://www.web-source.net" width="600" height="400">
        <embed src="http://www.web-source.net" width="600" height="400">
        Error: Embedded data could not be displayed.
    </object>

于 2013-10-30T10:19:06.740 回答
1

我认为你可以使用jQuery 加载

<div id="divId"></div>
<script type='text/javascript'>
    $(document).ready(function (){
        $('#divId').load(URL of target);     
    });
</script>
于 2013-10-30T10:22:43.820 回答
1

You can use Ajax or jQuery as an alternative to iframe. I feel jQuery would be much simpler. You can implement it simply as:

$('#SampleElement').load('YourURL');

Here, SampleElement is the ID of the given element.

于 2013-10-30T10:28:28.990 回答