我希望在外部服务器上上传一个静态网站,该网站将尝试从localhost:3000获取JSON数据(服务器程序已经在用户的计算机上运行)。

我试图用这样的jQuery做到这一点:

$.getJSON("http://localhost:3000/page", function(data){
    // process data...
});

为什么我会收到跨源政策错误,如何阻止它们? 我以为访问JSON数据应该否定那些跨站点错误?

更新1

我刚刚按照建议尝试了带回调的JSONP,但这里有一个奇怪的问题:如果我添加一个指向localhost:3000/page URL的脚本标记,则加载回调并在页面加载完成后正确显示数据,但这不是我的目标。

如果我使用$.getJSON方法尝试相同的操作,我仍然会得到与以前相同的错误:

XMLHttpRequest cannot load http://localhost:3000/page. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

===============>>#1 票数:3 已采纳

有趣的想法!

localhostsomewebsite.com完全不同。 因此适用相同的原产地政策。 你需要:

  • JSONP这意味着localhost上的服务器需要支持在自定义回调中包装JSON
  • CORS允许真正的跨域ajax,但在请求的两端都需要大量额外的头部fuzting。

JSONP可能是最容易实现的。 来自$.getJSON()的文档:

如果URL包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。 有关更多详细信息,请参阅$ .ajax()中有关jsonp数据类型的讨论。

然后,您的localhost服务器只需要使用jQuery将传入的回调参数。这意味着不是简单地渲染:

<%= jsonString() %>

本地服务器应该呈现更像这样的东西:

<% if (params.callback) { %>
  <%= params.callback %>(<%= jsonString %>);
<% } else { %>
  <%= jsonString %>
<% } %>

  ask by user1092719 translate from so

未解决问题?本站智能推荐:

2回复

调试“不安全的JavaScript尝试访问带有URL的框架……”

因此,错误消息是从另一域的(i)帧中访问父帧或窗口的安全限制。 (不安全的javascript尝试从URL yyy的框架访问URL xxx的框架。域,协议和端口必须匹配)。 但是,在webkit或chrome中没有显示生成此错误的行。 那么,如何获得侵犯该行的列表? 我知道我
1回复

如何在浏览器JS控制台中包含脚本时覆盖内容安全策略?

我试图通过这种方式使用控制台在现有网站上包含JQuery: 然后我收到了这个错误: 在开发过程中,我可能想要包含外部Javascript。 我可能不想复制粘贴整个JQuery代码,因为它看起来不整洁。 如何为开发目的覆盖内容安全策略? 这对快速测试非常有用。 我可能想
2回复

CORS Origin设置错误?

我有一个JavaScript应用程序,假设它部署在portal.example.com 。 其中包含一个<script>标记,用于加载从assets.example.com源代码。 该JavaScript文件向admin.example.com上的API发出HTT
1回复

内容安全策略的connect-src指令是否允许您发出跨域请求?

在内容安全策略中指定connect-src指令是否会放宽浏览器的相同源策略并允许您进行跨源XHR请求? 或者此指令仅用于限制已经合法的XHR(即同一来源调用或CORS启用的调用)?
1回复

当Google Analytics(分析)调用来自IFRAME时,Google Analytics(分析)如何绕过Same Origin策略?

当GA通话来自一个框架时,该网址如何进入父网址? 通常,当javascript尝试访问其框架之外的任何内容时,浏览器都会引发“ SAME ORIGIN POLICY错误”。 特别是对于parent.document,parent.location等。但是,当您检查分析数据发送回服务器时,
1回复

确定我是否有权访问window.opener.parent.document

我的网站(站点1)启动一个带有另一个网站(站点2)URL的窗口。 我可以在两个网站中修改代码,但是它们的域名不同。 我在站点2中启动的页面具有以下代码,该代码刷新单击关闭按钮时打开该页面的页面。 从站点2内启动该页面时工作正常,但是由于域不同,从站点1上出现以下Javascrip
1回复

Web服务器防火墙访问和浏览器不安全内容警告

我们在防火墙后面有一些内部应用程序,这些应用程序无法通过Internet访问。 我们正在尝试建立一个可访问Internet的门户(它也可以访问我们的内部应用程序),并试图为这两个应用程序提供菜单并通过iframe显示它们。 以下是应用程序详细信息: 门户-Tomcat + Ap
1回复

当IE安全性不允许创建对象时,新的ActiveXObject('Word.Application')会创建新的winword.exe进程

我们使用MS Word作为私人公司网站上几个字段的拼写检查程序,当IE安全设置正确时,它运行良好。 (站点区域设置为“受信任”,受信任区域已修改为允许控件在不提示的情况下运行。) 我们使用的脚本创建一个单词对象,然后关闭它。 当对象存在时,会运行winword.exe进程,但在关闭Wo
1回复

打开文件时的Windows安全消息

我有一个带有webBrowser控件的Windows窗体桌面应用程序。 我导航到服务器webBrowser1.Navigate(new Uri("\\\\\\\\srvername\\\\share\\\\directory\\\\"))上的webBrowser1.Navigate(new U
1回复

将SWF存储在本地PC上时,无法加载SWF

我有一个包含Flash .FLV播放器的HTML文件; 然后加载给定的FLV视频并播放。 想法是所有这些文件都作为应用程序安装的一部分存储在PC上的本地,我们使用HTML / flash作为帮助/手册。 在我的PC上可以正常工作,但是在用户的PC上什么也没有显示。 但是,如果我在线托