【发布时间】:2019-06-28 23:58:31
【问题描述】:
拥有一个生成 JSON 的 Perl Catalyst 应用程序,我需要在一个由 Apache 服务器提供服务的 HTML 页面中使用 jQuery 读取该 JSON 内容。 Catalyst 和 Apache 这两个应用程序都在同一主机上运行。
当我从 Apache 访问 Catalyst URL 时出现错误
Access to XMLHttpRequest at 'http://localhost:3000/abc/json_list' from origin 'http://localhost:8888' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
由于我在许多主题中都红了,因此必须设置一个(或更多)标题。在这种情况下,必须设置催化剂,但我不知道如何设置。
有什么提示吗?
【问题讨论】:
-
您没有显示任何相关代码。请edit您的帖子显示生成响应的相关代码。您可以通过调用Catalyst::Response 的
->header(...)方法在Catalyst 应用程序中设置标题,这就是我要开始的地方。 -
因此,要使应用程序被视为同源,两个应用程序在同一台服务器上运行是不够的。这两个应用程序还必须使用完全相同的主机名、相同的端口号和相同的协议(均为 http 或均为 https)提供服务。否则,如果任何请求是由您在 Apache 服务器上运行的前端 JavaScript 代码向 Perl Catalyst 服务器发出的,浏览器会将其视为跨域请求。这就是为什么您需要启用 CORS 的 Perl Catalyst 服务器。为此,请参阅lists.scsys.co.uk/pipermail/catalyst/2018-June/…