无法使用 ajax 调用加载 iframe 中的 URL

无法使用 ajax 调用加载 iframe 中的 URL

我的应用程序部署在 haproxy 服务器上,域名为 fireapp.com,下面有两台服务器 server1 和 server2。Haproxy 配置为处理来自 server2 的所有 /live/url 格式的请求。

Server2 contains live apps in format /live/app1, /live/app2。 所以

http://fireapp.com/live/app1 and fireapp.com/live/app2 are served from server2. 

Server1 是 Web 应用程序,其主页加载 iframe。iframe 使用如下 URL

<iframe id="iframe" src="http://fireapp.com/live/app1" width="850px" height="900px" ></iframe> 

页面加载时会抛出错误消息,firebug 说 404:网络错误http://fireapp.com/live/app1。虽然该应用程序在

 http://fireapp.com/live/app1 or http://server-2/live/app1. 

使用

<iframe id="iframe" src="http://server-2/live/app1" width="850px" height="900px" ></iframe> 

可以,但会出现跨域问题,我正试图避免这个问题。我还尝试过只提供相对路径,但第一次加载时又失败了。

<iframe id="iframe" src="/live/app1" width="850px" height="900px" ></iframe>

页面加载后,如果我尝试使用控制台中相同的先前 URL 来更新 iframe 的 src,它就会加载该页面。

更新:Haproxy 文件。

  global
    log 127.0.0.1 local0 notice
    maxconn 2000
    user haproxy
    group haproxy

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    timeout connect  50000
    timeout client  100000
    timeout server  100000

frontend http
 bind :80
 acl example path_reg -i ^/ey-\b
 #acl url_static       path_end       -i .jpg .gif .png .css .js
 acl url_stats path_beg /haproxy-stats


  use_backend  be_stats if url_stats
  use_backend static    if example

default_backend       app

backend be_stats
 stats uri /haproxy-stats

backend static
 balance     roundrobin
 server host1 10.0.0.234:80 check
 #server      static 10.211.***.***:80 check

backend app
 balance     roundrobin
 server  host1 10.0.0.***:80 check

答案1

尝试设置option httpclose或更好option http-server-close

在您的配置中,haproxy 将允许浏览器通过与原始请求相同的保持连接来请求 iframe 内容,而本应确保使用正确服务器的 ACL 将没有机会生效。

每当您使用 ACL 和/或请求操作选项时,您需要确保应用服务器不允许保持客户端连接保持打开。

相关内容