【问题标题】:Sending cross-domain data in IE6, 7, 8 & 9在 IE6、7、8 和 9 中发送跨域数据
【发布时间】:2011-09-19 23:41:52
【问题描述】:

我刚刚(艰难地)发现您无法对另一个域进行 ajax 调用。

我读过 iFrames(仅适用于 IE6)和跨域 xml 请求(仅适用于 ie8 及更高版本)

那么还有其他方法吗? 我基本上只需要发送数据到另一个服务器,而不是接收它。

【问题讨论】:

    标签: ajax internet-explorer cross-domain


    【解决方案1】:

    听起来您需要使用服务器端代理脚本。即对(例如)PHP 脚本的 AJAX 请求,该脚本将为您发出 HTTP/cURL 请求。

    【讨论】:

      【解决方案2】:

      JSONP 可能是您需要的。有很多例子。 这是一个很好的: http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

      【讨论】:

        【解决方案3】:

        我应该澄清一下:我不想使用(大型)库,也不能使用代理脚本。

        基本上,我认为 GET 对我正在尝试做的事情“足够好”(跟踪印象)

        因此,当脚本被触发时,它会创建一个 iframe,将其隐藏并将源 URL 设置为我的脚本 + 正确的 GET 参数。不需要表格。

        【讨论】:

        • 那么您也可以使用将Image 添加到dom 并在onload 上删除它...问题是您无法真正检查请求是否成功,但如果这可能不重要的话。
        【解决方案4】:

        我会将<iframe><form> 的能力结合起来,甚至可以发送到另一个域。 主文件:

        <iframe id=ifr src=form.html style="display: none;"></iframe>
        <input id=send-me><input type=button onclick="senddata();" value=Send>
        <script>
        function senddata()
        {
            var ifr = document.getElementById('ifr'),
                f = ifr.contentWindow.document.forms[0];
            f.elements.data.value = document.getElementById('send-me').value;
            f.submit();
        }
        </script>
        

        form.html:

        <form action="http://another.doma.in/" method=post>
            <input type=hidden name=data>
        </form>
        

        这将向另一个域发出 POST HTTP 请求并将&lt;input id=send-me&gt; 的内容发送到那里。

        请注意,这只是基本建议,如果您想多次发送数据而不刷新,则需要进行调整。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多