首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Access-Control-Allow-Origin不允许Origin null

Access-Control-Allow-Origin不允许Origin null
EN

Stack Overflow用户
提问于 2011-12-10 20:36:56
回答 7查看 308K关注 0票数 194

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

代码语言:javascript
运行
复制
<!-- 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执行此操作,如下所示:

代码语言:javascript
运行
复制
<div id="result">
<script type="text/javascript">
$('#result').load('weather.xsl');
</script>
</div>

但是我得到了以下错误:访问-控制-允许-起源不允许原始空值。

我读过关于向xslt添加头的文章,但我不确定如何做到这一点,所以任何帮助都将不胜感激,如果在html输出中的加载不能以这种方式完成,那么关于如何做的建议将是很棒的。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-10 20:45:06

Origin是本地文件系统,因此这意味着您正在加载通过file:/// null执行load调用的file:///页面(例如,只需在本地文件浏览器或类似浏览器中双击它)。

大多数浏览器甚至不允许从与文档相同的目录加载文件,从而将Same Origin Policy应用于本地文件。(火狐曾经允许相同的目录和子目录,但not any longer

基本上,在本地资源中使用ajax是行不通的。

如果你只是在本地测试一些你真的要部署到web上的东西,而不是使用本地文件,那么安装一个简单的web服务器并通过http:// URL进行测试。这为您提供了一个更准确的安全图片。您的IDE很可能内置了某种类型的服务器(直接或通过扩展),让您只需在IDE中单击"run“即可启动服务器并为文件提供服务。

票数 238
EN

Stack Overflow用户

发布于 2012-11-07 11:20:23

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

Access-Control-Allow-Origin不允许

原点为空。

解决方案:使用火狐或上传你的数据到一个临时服务器。如果你还想使用Chrome,可以从下面的选项开始;

代码语言:javascript
运行
复制
--allow-file-access-from-files

更多信息如何添加上述参数到您的浏览器:右键单击您的任务栏上的浏览器图标,右键单击弹出窗口中的谷歌浏览器,并单击属性,并添加上述参数到目标文本框中的快捷方式标签。它将如下所示;

代码语言:javascript
运行
复制
C:\Users\XXX_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

希望这能有所帮助!

票数 223
EN

Stack Overflow用户

发布于 2014-03-08 00:32:40

我只想补充一下,“运行any服务器”这个答案似乎相当令人望而生畏,但如果您的系统上安装了python (至少在MacOS和任何Linux发行版上默认安装),那么它就像下面这样简单:

代码语言:javascript
运行
复制
python -m http.server  # with python3

代码语言:javascript
运行
复制
python -m SimpleHTTPServer  # with python2

因此,如果您将html文件myfile.html放在一个文件夹中,例如mydir,那么您所要做的就是:

代码语言:javascript
运行
复制
cd /path/to/mydir
python -m http.server  # or the python2 alternative above

然后将浏览器指向:

代码语言:javascript
运行
复制
http://localhost:8000/myfile.html

你就完了!适用于所有浏览器的,无需禁用web安全,允许本地文件,甚至使用命令行选项重新启动浏览器。

票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8456538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档