Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 跨服务器AJAX调用_Php_Ajax_Codeigniter - Fatal编程技术网

Php 跨服务器AJAX调用

Php 跨服务器AJAX调用,php,ajax,codeigniter,Php,Ajax,Codeigniter,我发现一些帖子为其他人解决了这个问题,但对我的情况却没有。我想为我的跨服务器ajax调用获得最好的解决方案 情况是这样的。我有两个URL,www.mysite.com和members.mysite.com。第一个站点是wordpress驱动的,第二个是codeigniter驱动的,我把这些站点称为wordpress端和codeigniter端。codeiginter端有一个事件日历页面,它作为一个模块创建,因此任何页面所要做的就是包含文件和所有javascript以及它附带的东西。在wordpr

我发现一些帖子为其他人解决了这个问题,但对我的情况却没有。我想为我的跨服务器ajax调用获得最好的解决方案

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

  • jsonp-这不支持POST数据
  • 简单服务器端代理-由于javascript在两个URL之间共享,因此我必须在wordpress端和codeigniter端创建相同的文件。这意味着重复的代码、性能问题,以及如果用户在codeigniter端,请求必须进行额外的页面调用以获取数据这一事实
  • 符号链接-由于这两个链接都位于同一台服务器上,是否可以在wordpress端创建符号链接?我的codeigniter设置会被加载吗?我觉得这行不通
  • iFrame-这是一个包含的模块,因此它缺少所有的样式、标题等等
  • .htaccess文件-这是一个很长的目标,但是如果有某种方法可以让.htaccess文件在ajax不知道的情况下将调用重定向到另一个服务器,它可能会工作吗
  • 在这一点上,我倾向于#2,因为这是唯一有效的解决方案。你们还有其他的解决办法吗?若有某种方法可以在jsonp中传递数据,那个将是理想的,但所有站点都说不可能传递post数据,而且codeigniter不喜欢查询字符串。。。事实上,我可以启用它,但这可能会把一切都搞砸

    更新 所以我遵循了第一个招贴画的想法,并且成功了。我发现了一个类似的解决方案
    现在让我担心的是,他们说有一些跨浏览器的问题。有什么想法吗?

    在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"
    
    
    命令允许,拒绝
    通融
    标题集访问控制允许原点“*”
    #您可以将其限制为“www.mysite.com”,而不是“*”
    

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

    我可以将其放入我的.htaccess文件中吗?对其进行了一些研究,并在firefox上运行!我没有把它放到我的配置文件中,我实际上把它放到了页面的标题中。请阅读更新。我很高兴我的回答对您有所帮助,关于jquery ajax调用,我不认为他们不会遵守“访问控制允许源代码”标题。。。当我在阅读你在更新中提供的链接时写下这篇评论,第二个答案(Mike C的答案)似乎表明了我在说什么。。。它应该会起作用:)