【问题标题】:Add Access-Control-Allow-Origin: * easily to JSON添加 Access-Control-Allow-Origin: * 轻松到 JSON
【发布时间】:2017-12-12 06:19:48
【问题描述】:

在我的网络服务器上,我有一个文件夹(假设链接是:www.foo.com/json/)。

在这个链接中,我有一个 json 文件,比如 foo.json。我想从另一个网站访问这个文件。我试图研究“CORS”,但它看起来很复杂,而且我的网站 foo.com 上没有使用任何后端。我听说您可以简单地使用 php 并将其放入:

<?php
header("Access-Control-Allow-Origin: *");

如何将其添加到具有 .json 的文件夹中,这样当我这样做时:

$.getJSON("http://foo.com/json/foo.json", function(json) {
    console.log(json
)});

它不会抛出错误。我希望这很简单,让任何网站都可以做到,我只是不知道如何连接它。

【问题讨论】:

  • 如果foo.json 只是一个实际的文本文件,您需要设置实际的服务器软件来应用该标头。唯一一次涉及到像 PHP 这样的服务器端语言是,如果您的目标是生成/返回数据的脚本
  • 也许这可以在服务器配置文件中完成,当文件名以.json结尾时添加标题。

标签: javascript php json cors


【解决方案1】:

不要直接访问JSON文件,中间使用一个PHP页面。因此,您调用 www.foo.com/json/,它将运行该文件夹中的默认 PHP 文件(例如 index.php)。现在这个 PHP 页面将像你提到的那样设置 CORS 标头:

header("Access-Control-Allow-Origin: *");

然后读取 JSON 文件并将其与正确的 MIME 类型一起添加到响应中:

header("content-type: application/json");

【讨论】:

    【解决方案2】:

    选项 1:使用 PHP

    您不能将其添加到 .json 文件中。您需要创建一个返回 JSON 数据的 php 文件。一个粗略的例子可能是:

    /json/index.php?f=foo

    header("Access-Control-Allow-Origin: *");
    header("content-type: application/json");
    echo file_get_contents($_REQUEST['f'].".json");
    

    这将允许您设置 Access-Control-Allow-Origin 标头并将所需的 json 文件内容返回到您的远程调用:

    $.getJSON("http://foo.com/json/index.php?f=foo", function(json) {
        console.log(json);
    });
    

    选项 2:使用服务器配置

    另一种选择是将标头配置为应用于服务器配置中的 json 文件。使用 Apache2,您可以将以下内容添加到您的服务器配置或在 /json 目录中创建一个 .htaccess 文件以包含:

    <Files "*.json">
      Header set Access-Control-Allow-Origin "*"
    </Files>
    

    这将自动包含所有 json 文件的标头。

    【讨论】:

    • 太棒了,效果很好!感谢我找到的最简洁的解释:) 不能投票,因为我没有声誉。
    • 问题:理论上有人可以发布到 json,因为我允许 Access-Control-Allow-Origin 吗?还是这是只读的?
    • 如果您的意思是询问是否可以修改 JSON 文件,那么我认为只有使用 php 方法才能添加代码来处理输入数据并写入 index.html 中的文件。 php。 Access-control-allow-origin 标头仅用于允许远程使用资源,使用这些资源可以完成的操作与在本地访问它们没有什么不同,并且基于服务器配置和促进这些操作的服务。
    猜你喜欢
    • 1970-01-01
    • 2014-08-14
    • 2016-06-10
    • 2020-01-01
    • 2011-06-27
    • 2016-07-03
    • 2017-06-15
    • 2016-09-30
    相关资源
    最近更新 更多