访问控制-允许-源不允许源空

我做了一个小的xslt文件来创建一个名为weather.xsl的html输出,代码如下:

<!-- DWXMLSource="http://weather.yahooapis.com/forecastrss?w=38325&u=c" -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="yweather"
xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
    <img src="{/*/*/item/yweather:condition/@text}.jpg"/>
</xsl:template>
</xsl:stylesheet>

我想将html输出加载到html文件中的div中,我正在尝试使用jQuery执行以下操作:

<div id="result">
<script type="text/javascript">
$('#result').load('weather.xsl');
</script>
</div>

但是我收到以下错误:访问控制-允许-源不允许源空。

我已经读过关于向xslt添加标头的信息,但我不确定如何做到这一点,所以任何帮助都将不胜感激,如果无法以这种方式加载html ouput,那么关于如何做到这一点的建议将是很棒的。


答案 1

Origin是本地文件系统,因此这表明您正在加载通过URL执行调用的HTML页面(例如,只需在本地文件浏览器中双击它或类似内容)。nullloadfile:///

大多数浏览器将同源策略应用于本地文件,甚至不允许从与文档相同的目录加载文件。(过去,Firefox 允许相同的目录和子目录,但现在不再允许了

基本上,将 ajax 与本地资源结合使用是行不通的。

如果您只是在本地测试一些真正要部署到Web的东西,而不是使用本地文件,请安装一个简单的Web服务器并通过URL进行测试。这为您提供了更准确的安全图片。您的IDE很可能具有某种内置的服务器(直接或通过扩展),使您只需在IDE中点击“运行”,然后启动服务器并提供文件。http://


答案 2

Chrome 和 Safari 对将 ajax 与本地资源结合使用有限制。这就是为什么它抛出一个错误,如

“访问控制-允许-源”不允许源空。

溶液:使用火狐浏览器或将您的数据上传到临时服务器。如果您仍然想使用Chrome,请使用以下选项启动它;

--allow-file-access-from-files

详细了解如何将上述参数添加到 Chrome 中:右键单击任务栏上的Chrome图标,右键单击弹出窗口中的Google Chrome,然后单击属性,然后将上述参数添加到快捷方式选项卡下的“目标”文本框中。它将如下所示;

C:\Users\XXX_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

希望这会有所帮助!