1

我正在尝试将维基百科文章加载到我的网站上。我正在尝试按照此处的说明进行操作:http ://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki但我不知所措。

我试过了:

var xyz = document.getElementById(url("http://en.wikipedia.org/w/index.php?title=Special:Export&history=1&action=submit&pages=Albert_einstein")

var xyz = $('#xyz').load('http://en.wikipedia.org/w/index.php?title=Special:Export&history=1&action=submit&pages=Albert_einstein');

document.write(xyz);
4

2 回答 2

1

您无法通过 JavaScript 从与您自己的域不同的域加载内容。JS安全策略阻止它。

“在计算领域,同源策略是许多浏览器端编程语言(例如 JavaScript)的重要安全概念。该策略允许脚本在源自同一站点的页面上运行——方案、主机名和端口号的组合[ 1 – 访问彼此的方法和属性,没有特定限制,但阻止在不同站点上跨页面访问大多数方法和属性。[1]
-- 维基百科,来自 W3C

Shazbot 建议使用 iframe,但不推荐使用 iframe。使用对象:

<div class="timeContainer" style="background:#333; color:#090; padding:10px 0;">
  <div style="text-align:center; width:100%;">Current Date and Time</div> <!-- Heading, replaceable with hx tag -->

<!--[if IE]>
 <object classid="clsid:25336920-03F9-11CF-8FD0-00AA00686F13" data="your.url/" style="width:100%; height:19px;">
  <p>backup content</p>
 </object>
<![endif]-->

<!--[if !IE]> <-->
 <object type="text/html" data="your.url/" style="width:100%; height:19px;">
  <p>backup content</p>
 </object>
<!--> <![endif]-->
</div> <!-- timeContainer -->

或者,您可以通过 PHP 使用 cURL(如果您的服务器支持它)。我不确定 Python,但我认为 Python 也可以使用 cURL。

于 2013-04-10T21:06:02.800 回答
0

如果您使用的是现代浏览器,则应该能够使用 CORS。根据 Wikipedia API 文档,您需要传递与浏览器发送的标头origin匹配的附加参数。Origin

http://en.wikipedia.org/w/api.php

"origin - 当使用跨域 AJAX 请求 (CORS) 访问 API 时,将其设置为原始域。这必须与 Origin: 标头中的一个来源完全匹配,因此必须将其设置为类似 http: //en.wikipedia.orghttps://meta.wikimedia.org。如果此参数与 Origin: 标头不匹配,将返回 403 响应。如果此参数与 Origin: 标头匹配并且源被列入白名单,将设置 Access-Control-Allow-Origin 标头。”

于 2013-04-10T21:30:41.653 回答