【问题标题】:Cross Server AJAX Call跨服务器 AJAX 调用
【发布时间】:2011-01-10 00:21:39
【问题描述】:

我发现一些帖子可以为其他人解决此问题,但不适用于我的情况。我想为我的跨服务器 ajax 调用获得最佳解决方案。

情况是这样的。我有两个网址,www.mysite.com 和 members.mysite.com。第一个站点是 wordpress 驱动的,第二个站点是 codeigniter 驱动的,我将这些站点称为 wordpress 端和 codeigniter 端。 codeiginter 端有一个作为模块创建的事件日历页面,因此所有页面所要做的就是包含该文件以及所有 javascript 和内容。在 wordpress 方面,我们必须将其中一个文件包含到页面中,但问题是 codeigniter 方面是 ajax 驱动的,所以当它进行 ajax 调用时,调用将是跨服务器的。以下是我在网上看到的针对我的情况的缺点的解决方案:

  1. jsonp - 这不支持 POST 数据。
  2. 简单的服务器端代理http://devlog.info/2010/03/10/cross-domain-ajax/ - 由于javascript 在两个url 之间共享,我必须在wordpress 端和codeigniter 端创建相同的文件。这意味着重复代码、性能问题以及如果用户在 codeigniter 端,请求必须进行额外的页面调用才能获取数据。
  3. 符号链接 - 由于这两个都驻留在同一服务器上,是否可以在 wordpress 端建立符号链接?我的 codeigniter 设置会被加载吗?我觉得这行不通。
  4. iFrame - 这是一个包含在内的模块,因此它缺少所有样式和标题等
  5. .htaccess 文件 - 这是一个长镜头,但如果有某种方法可以让 .htaccess 文件在不知道 ajax 的情况下将调用重定向到其他服务器,它可能会起作用吗?

在这一点上,我倾向于 #2,因为这是唯一可行的解​​决方案。你们还有其他的解决方案吗?如果有某种方法可以将数据与 jsonp 一起传递,那将是理想的,但所有网站都表示无法传递发布数据,并且 codeigniter 不喜欢查询字符串……实际上,我可以启用它,但那会可能现在把所有事情都搞砸了。

更新

所以我遵循了第一个海报的想法,并且成功了。我在 jQuery $.ajax(), $.post sending "OPTIONS" as REQUEST_METHOD in Firefox 现在让我担心的是他们说存在一些跨浏览器问题。有什么想法吗?

【问题讨论】:

    标签: php ajax codeigniter


    【解决方案1】:

    在 codeigniter 站点中设置 HTTP 标头“Access-Control-Allow-Origin”会解决您的问题吗? 在你的 apache 站点配置文件中这样的东西可以解决问题:

        <Directory "/usr/lib/php-lib">
                Order allow,deny
                Allow from all
                Header set Access-Control-Allow-Origin "*"
        </Directory>
    
        #Instead of "*" you could restrict it to "www.mysite.com"
    

    或者您可以在页面目录中的 .htaccess 文件中设置此标头

    【讨论】:

    • 我可以把它放到我的 .htaccess 文件中吗?
    • 对它做了一些研究,它可以在 Firefox 上运行!我没有把它放在我的配置文件中,我实际上把它放在了页面的标题中。请阅读更新。
    • 我很高兴我的回答对您有所帮助,关于 jquery ajax 调用,我认为他们不会尊重 'Access-Control-Allow-Origin' 标头......和我一样我在阅读您在更新中提供的链接时写此评论,第二个答案(迈克 C 的答案)似乎表明我在说什么......它应该工作:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2018-12-25
    相关资源
    最近更新 更多