【问题标题】:Allow Cross-Origin-Ressource Sharing R-Studio Server/Shiny允许跨域资源共享 RStudio Server/Shiny
【发布时间】:2016-11-02 07:57:30
【问题描述】:

我在 R-Studio Server 上托管一个闪亮的应用程序。通过 Shiny 创建的 App 是一个浏览器 App。这意味着 JavaScript 是从客户端站点执行的。在我的应用程序中,我通过用户交互创建了几个,它们保存在 localhost/webserver 上。然后我想用 JavaScript 访问这些文件并在那里处理它们。这就是麻烦开始的地方......

这是cross-origin-ressource-sharing,我不能创建Cross-Origin XMLHttpRequest,因为出于安全原因,这是禁止的。我应该如何访问 JavaScript 中的文件?当我将相对/绝对路径传递给我得到的文件时

我传递了一个类似path/to/file.json 的链接,当我在控制台中签入时,javascript 将其更改为localhost:numbererOfPort/path/to/file 之类的东西。当我在浏览器中输入它时,什么也没有。在我的文件系统上,该文件位于path/to/file 下,没有localhost...

加载资源失败:服务器响应http://localhost...json,状态为404(未找到)。

我查看了JONSP,但我认为这不是我要找的,因为我不是停靠在 API 上,而是停靠在磁盘上的文件上。 我还尝试通过安装打开/关闭 CORS 的扩展程序来放松 Chrome 的安全设置。 我仍然收到这条消息:

XMLHttpRequest 无法加载 xy。跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource。

【问题讨论】:

  • 如果它抛出一个 404,这不是 CORS 的问题。可以通过设置正确的标头来启用 CORS 本身,尤其是 Access-Control-Allow-Origin。
  • @SargoDarya 我添加了一些404 可能来自的信息。
  • “在 javascript 中访问这些文件并在其中处理它们”是什么意思?
  • @warmoverflow 我想将.json 文件加载到 JavaScript 中以便在那里使用它们。类似d3.json(...)
  • 我认为,如果您将 json 文件放在应用程序的 www 子文件夹中,那么您可以使用 http://localhost:3838/app_directory/file.json 访问该文件(此处没有 www)。然后它应该工作。这与 CORS 无关。只要您可以使用浏览器访问该文件,您就可以在 Javascript 中进行访问。

标签: javascript r cors shiny cross-domain


【解决方案1】:

在 Shiny 中,静态文件(如图像、css 和 javascript 文件)应放在 app 文件夹下的 www 子文件夹中。然后可以使用相对路径(但没有www 部分)在闪亮的代码中访问这些文件,或者使用http://host_name:port/app_directory/file.name 在Web 浏览器中访问这些文件(同样没有www)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 2013-01-12
    • 2021-07-18
    • 2018-05-04
    • 2011-07-05
    • 2011-07-31
    • 2019-07-13
    • 2018-05-14
    相关资源
    最近更新 更多