我正在try 使用FETCH从另一台服务器获取JSON文件:

fetch('https://site.test/data.json',
    {
        method: "GET",
    })
    .then(function (res) {
        return res.json();
    })
    .then(function (data) {
        console.log(data);
    });

如果我直接取,我会收到CORS问题.

如果我通过PHP获取,我没有CORS问题,但我没有得到文件本身,所以它不能被缓存.

header('Access-Control-Allow-Origin: *');
echo file_get_contents("data.json");

有没有可能以某种方式返回文件本身,并在php中设置理想的缓存头?

推荐答案

在Apache主机上,您只需将一个.htaccess文件放在JSON文件所在的同一目录(或任何父目录)中,然后添加以下内容:

<FilesMatch "\.(json)$">
    Header add Access-Control-Allow-Origin "*"
</FilesMatch>

这将为所有.json文件请求设置适当的标头.您还可以根据需要指定允许的方法和标头.

<FilesMatch "\.(json)$">
    Header add Access-Control-Allow-Origin "*"
    Header add Access-Control-Allow-Methods "GET,PUT,POST,DELETE"
    Header add Access-Control-Allow-Headers "Content-Type, Authorization"
</FilesMatch>

Php相关问答推荐

如何发送woocommerce订单跟踪码与短信

在内部API请求之后,在响应客户端之前,是否忘记了PHP中的Header()?

创建一个新的可变产品及其属性以用于WooCommerce中的变体

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

如何确保所有语言文件都使用Laravel中的新密钥进行更新?

laravel中获取的数据会自动更改时间戳值

PHP根据特定索引值从中删除子数组

服务器迁移后无法上载文件-可能存在权限问题

如何从WooCommerce checkout 帐单邮箱字段中删除星号?

基于自定义域的每个购物车项目的WooCommerce定制数量输入步骤

htaccess重命名index.php以在URL中显示为SEO的友好名称

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

从 XAMPP 运行 shell 脚本时,意外标记(附近出现语法错误

Google Drive API 服务->文件->get('root') 失败并显示找不到文件. (范围问题?)

Woocommerce单个添加到购物车页面中的产品动态定价

为什么foreach循环会输出每个结果?

ACF 更新字段功能不更新 WordPress 中的任何数据

无法在 Laravel 10 中安装 jenssegers/mongodb

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段

我正在使用 Baryryvdh/laravel-snappy 从 HTML 导出 PDF 它正在工作但缩小了 pdf 文件