0

我正在写一个 .json 文件,我需要包含标题,这样我就可以毫无问题地访问它。我需要添加到 index.php 文件的标题:

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

创建 .json 文件的代码片段是:

public function saveCalendarAsFile() {
    $file2 = fopen("{$this->name}.txt", 'w');
    fwrite($file2, json_encode($this->events));
    fclose($file2);
}    

public function saveCalendarAsFile() {
    $file2 = fopen("{$this->name}.json", 'w');
    fwrite($file2, json_encode($this->events));
    fclose($file2);
}

无论我将标题放在哪里(在第 1 行、第 2 行或第 3 行之前,如本文所建议的那样),它都不会更改外部文件的 HTTP 响应(目前它被列为 text/plain)。

php 文件在文档中具有相同的标题,但根据那里的多个帖子,它需要位于“echo”语句之前。由于我的代码不使用 echo 语句(因为我正在写入外部文件),所以必须在另一个地方放置标题,这样它会影响 .json 文件。提前致谢。

在此处输入图像描述

4

1 回答 1

1

将目标文件保存在服务器上时无需设置标头,但是,如果您希望能够访问该文件(跨域),则需要设置 Access-Control-Allow-Origin(恰好在您请求时)来自服务器的那个文件)。

在您的情况下:您将 json 文件 {$this->name}.json 保存在您的服务器上,如果您想接收该文件并设置 (Access-Control-Allow-Origin) 那么您需要使用 PHP 读取该文件,然后设置标题例如:

考虑文件名是: myjson.json 那么你不能直接请求该文件,使用 php 读取文件然后输出它:

jsonnreador.php
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
echo file_get_contents('myjson.json');
?>
于 2013-02-06T06:57:30.543 回答