遇到错误:尝试在cPanel服务器设置上使用PHP获取Json数据
P粉896751037
2023-08-13 19:44:52
<p>我有一个包含javascript的index.html文件:</p>
<pre class="brush:php;toolbar:false;">async function fetchCelebritiesData() {
try {
const response = await fetch('/data.php');
const data = await response.json();
return data;
} catch (error) {
console.error('Error fetching data:', error);
return [];
}
}</pre>
<p>PHP文件将数据连接到应用程序,并从names.json文件中获取数据。</p>
<pre class="brush:php;toolbar:false;"><?php
// 检查请求是否来自允许的域名
$allowedOrigins = array("example.com", "www.example.com");
$origin = $_SERVER['HTTP_ORIGIN'] ?? ''; // 从请求中获取HTTP_ORIGIN
if (in_array($origin, $allowedOrigins)) {
header("Access-Control-Allow-Origin: $origin");
} else {
header("HTTP/1.1 403 Forbidden");
exit;
}
// 读取并输出JSON数据
$data = file_get_contents("data.json");
header("Content-Type: application/json");
echo $data;
?></pre>
<p>这个设置在控制台中给我一个错误,错误信息如下:</p>
<pre class="brush:php;toolbar:false;">ET https://example.com.com/data.php 403
fetchCelebritiesData @ (index):291
(anonymous) @ (index):375
load (async)
(anonymous) @ (index):373
(index):295 Error fetching data: SyntaxError: Unexpected end of JSON input
at fetchCelebritiesData ((index):292:33)
at async (index):375:30
fetchCelebritiesData @ (index):295
await in fetchCelebritiesData (async)
(anonymous) @ (index):375
load (async)
(anonymous) @ (index):373</pre>
<p>需要帮助理解可能的问题。我已经检查了PHP和JSON文件以及文件夹的权限,看起来都没问题。--6 4 4--</p>
<p>生成了一个日志,显示了这个错误的重复。</p>
<p><code>[11-Aug-2023 09:08:58 UTC] PHP Notice: Undefined index: HTTP_ORIGIN in /home/pixellic/public_html/web-applications/celebrities-age-finder/get_secure_data.php on line 4</code></p>
<p>我是一个编码新手。</p>
<p>谢谢。</p>
<p>我尝试使用php文件安全地获取json数据。</p>
<p>但是我得到了一个403错误。</p>
除非您在请求中发送了一个
Origin
头部(请参见手册),否则$_SERVER
中不会有HTTP_ORIGIN
元素。但是您可以使用REMOTE_HOST
代替:正如您所指出的,您的代码会导致403错误,这是因为此测试失败(因为
$origin
始终是''
):请注意,在可能发送
Origin
头部的情况下,您可以将REMOTE_HOST
用作备用: