【问题标题】:Nothing seems to happen after building Dart application构建 Dart 应用程序后似乎什么都没有发生
【发布时间】:2015-04-01 03:01:41
【问题描述】:

我使用 Dart 编辑器构建了一个 Web 应用程序,在 Dartium 中进行测试时一切正常。我想在托管站点上对其进行测试,所以我从工具菜单中运行了 Pub Build。看起来它创建了 build 文件夹并将所有内容放在那里,包括我拥有的 .dart 文件中的 .js 文件。当我运行我通常执行的 .html 文件时,什么也没发生。我查看了源代码,它仍然指向 .dart 文件,所以我将其更改为 .js 文件。仍然没有看到预期的结果。

这是我第一次尝试在 Dart VM 之外运行 dart 应用程序。我在某处错过了一步吗?也没有真正找到任何关于此的文档。

【问题讨论】:

  • 从 DartEditor 启动应用然后将 URL 复制到 Chrome 或 Firefox 时会发生什么?
  • 当我在 Chrome 中运行它时,几乎一切正常。在页面加载时更改的 DOM 正在工作。事件侦听器正在工作。唯一不起作用的是当我尝试对项目外部的站点使用 GetString 方法时返回错误。
  • 从构建目录运行浏览器控制台时是否出现任何错误?
  • 啊...没想到那里检查。它说“XMLHttpRequest 无法加载 file。跨源请求仅支持协议方案......”它试图加载的文件只是一个 html 文件,当页面加载到页面中时加载。

标签: javascript dart


【解决方案1】:

如果您尝试从加载页面的服务器以外的另一台服务器获取资源,则该服务器需要返回 CORS 标头,否则您的浏览器将拒绝从该另一台服务器获取资源。 这取决于您的服务器如何配置或添加它。

参见示例
- How do you add CORS headers in Redstone interceptor?
- CORS with Dart, how do I get it to work?

【讨论】:

  • 您描述的问题是有道理的,因为我试图从不同站点上的 API 中提取数据,但我不确定我是否理解解决方案。看起来客户端向服务器发送请求,服务器添加标头,然后在响应返回客户端之前,该请求是否继续发送到外部站点?
  • 老实说,我不明白为什么/如何提高安全性,但如果 JavaScript 从与页面来源不同的站点获取资源,服务器需要允许它。它使用浏览器缓存的 CORS 标头进行响应。下次浏览器甚至不尝试发送请求时,CORS 标头不允许页面原始 URL。如果您发出 post 请求,则会在实际 post 请求(预检请求)之前发出额外的请求,以检查 CORS 标头。如果他们不允许您的页面来源,则根本不会发出发布请求本身。 CORS 还有更多功能。
  • ...但不是我的专业领域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多