同一域上的ajax跨域错误?

Posted

技术标签:

【中文标题】同一域上的ajax跨域错误?【英文标题】:ajax cross domain error on SAME domain? 【发布时间】:2012-01-08 12:54:07 【问题描述】:

我的客户有一个 wordpress 博客,我们正在将 rss 提要发送到主页以显示过去 3 篇文章...我正在使用 jquery,一切都运行良好。

我们将 IP 更改为专用 IP,但它突然停止工作。我的 XHR 是 0!我假设它认为这是一个跨域问题。

对于临时修复,我编写了一个 php 代理来加载文件,我正在 ajaxing ——(有效 - 注意:文件在 wp 目录中,所以它不是目录范围的问题)

谢谢!

//编辑(代码)

$.ajax(
     url: '/blog/?feed=rss2',
     success: function() 
       alert('worked');
     ,
    error: function(x)
        alert(x.status);
    
);

$.ajax(
     url: '/blog/proxy.php',
     success: function() 
       alert('worked');
     ,
    error: function(x)
        alert(x.status);
    
);

注意:proxy.php 只打开“/blog/?feed=rss2”

我在 proxy.php 上成功,但得到 jqXHR.status = 0

【问题讨论】:

是什么让你相信这不是跨域问题? 通常当您获得 xhr 时,这是因为您尝试跨域访问或文件不可用。好吧,该文件是 def 可用的 - 但我仍然得到状态 = 0。权限在某处搞砸了,我想我现在无法访问 ajax 你能提供一些代码吗? 您是否尝试过在浏览器中访问/blog/proxy.php?那你有回应吗?如果您收到回复,您可能对跨域问题是正确的,但我认为这也可能是 fopen 通过网络连接的问题。 是的,我可以加载 proxy.php 没问题 - 它使 xml 完美呈现......而且在 ajax 代理时它也可以工作。只是在尝试直接 ajax 文件时不起作用。注意:在我们切换 IP 地址之前它一直有效 【参考方案1】:

尝试检查其中的一些以了解更多详细信息。绝对使用 Firebug 或 Chrome 的 XHR 调试器 (F12)

为了向后兼容 XMLHttpRequest,jqXHR 对象将 公开以下属性和方法:

就绪状态 状态 状态文本 responseXML 和/或 responseText 当 底层请求分别以 xml 和/或文本响应 setRequestHeader(名称,值) getAllResponseHeaders() getResponseHeader() 中止()

【讨论】:

以上是关于同一域上的ajax跨域错误?的主要内容,如果未能解决你的问题,请参考以下文章

Ajax中的跨域请求(跨源请求)

ajax跨域问题解决方案

ajax跨域问题-web开发必会

cors跨域 + 异步上传文件

无法在跨域上使用 JSONP 发布数据

使用 jQuery 和 AJAX 的跨域 PHP 调用