我试图从同一个域解析并加载XML(来自WordPress)但我收到以下错误:
XMLHttpRequest无法加载http://www.knead-nyc.com/articles/feed/。在预检响应中,Access-Control-Allow-Header不允许使用请求标题字段X-Requested-With。
奇怪的是我的html页面位于: http://knead-nyc.com/test.html 我的WordPress xml Feed在这里:http://www.knead-nyc.com/articles/feed/
我的HTML代码是:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
function parse(document){
$(document).find("item").each(function(){
$("#content").append(
'<br /> Title: '+$(this).find('title').text()+
'<br /> Author: '+$(this).find('link').text()+
'</p>'
);
});
};
$.ajax({
url: 'http://www.knead-nyc.com/articles/feed/', // name of file you want to parse
headers: {'X-Requested-With': 'XMLHttpRequest'},
dataType: "xml",
success: parse,
error: function(){alert("Error: Something went wrong");}
});
});
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>
我在&#34;文章&#34;中安装了WordPress。夹。为了防止域冲突,我对位于WordPress根目录中的.htaccess
文件进行了以下更改,但它无法正常工作:
# BEGIN WordPress
<IfModule mod_rewrite.c>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials true
RewriteEngine On
RewriteBase /articles/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /articles/index.php [L]
</IfModule>
# END WordPress
答案 0 :(得分:0)
我做了一些搜索并找到了解决方案。虽然我在同一个域(example.com),但我收到以下错误。 &#34; XMLHttpRequest无法加载http://example.org/。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。因此,http://www.example.org来源不允许访问&#34;
我偶尔发现,相同的源策略可能会阻止同一域上的子域之间的请求。因此,经过几次搜索,我可以通过在JavaScript中添加document.domain来解决这个问题。例如: document.domain =&#39; example.com&#39;;
我还将JavaScript的顶部更改为:
$("#loading").show();
document.domain = 'example.com';
$.ajax({
type: "GET",
url: "/articles/feed/",
//url will load http://www.example.com/articles/feed/
dataType: "xml",
success: parseXml
});