【问题标题】:AJAX Load on the client side workaround | Cross Origin requests errorAJAX 加载客户端解决方法 |跨域请求错误
【发布时间】:2018-06-07 23:43:30
【问题描述】:

我的目标是创建一个视觉小说,“点击”进度游戏。我的目标是使用纯 HTML、CSS 和 JS 来实现这一目标。游戏应该只在浏览器中 index.html 的客户端运行。

我的问题是,我在处理这些跨源请求时遇到了一些麻烦,我正在尝试从 2 周开始找出解决方案,但我不知道如何实现这一点。错误“仅协议方案支持跨源请求:http、data、chrome、chrome-extension、https、chrome-extension-resource。”

我想要实现的非常简单。我不想使用 twine 引擎之类的东西,而是想编写原生代码,因为它对我来说效率更高、速度更快。

到目前为止我尝试过的选项:

  • JQuery 加载 - 需要服务器
  • 编写了纯 XML Ajax 加载 - CORS 错误。 (所以...服务器)
  • 我开始将 html 写入 js 文件并加载它们,然后使用 document.write 或 innerHTML 替换,但这只能让我到此为止,并且在 5 个文件之后很难扩展。

我该怎么做才能让它运行?我知道 C#,但在我转到 .exe 之前,我是否可以完成这项工作? react.js 将仅在客户端工作并加载组件而不会出现 CORS 错误吗?从未尝试过该框架,因为在教程中我看到他们使用网络服务器。

有什么想法吗?先谢谢了!

【问题讨论】:

  • 如果应用程序使用文件协议运行,那么您可以做的事情是规避 CORS。不过,最简单的方法是将数据存储在 .js 文件中。
  • 不要使用 AJAX。学习反应。
  • @ChrisG 学习反应有什么帮助?反应原生??
  • @ChrisG — 如果您使用 JavaScript 加载文件,那么您使用的是 Ajax ......无论您是否使用像 React 这样的 Controller-View 库都没有关系。
  • 我最终会选择电子,并且应该在我的第一条评论中这么说。

标签: javascript html xml client-side


【解决方案1】:

react.js 是否只能在客户端工作并加载组件而不会出现 CORS 错误?

不,因为它仍然是在浏览器中运行的另一件事,并且受到浏览器施加的限制。

你需要一个服务器,一个不施加这些限制的浏览器,(像 Electron 这样将两者结合起来的东西),使用 JSONP 之类的脏黑客来加载文件,或者包装所有文件,以便它们嵌入在您最初加载的 JS 中。

【讨论】:

  • Electron 似乎是一个可行的选择。不知道这个框架。但是,还有另一种方法可以加载像 html 这样的本地文件吗?例如,Twine 是如何实现这一目标的?
  • 大概 Twine 使用了我在回答的最后一段中提到的一种技术,但我不打算对其进行逆向工程来找出哪个。