Image from Dev-Tools that shows the issue
I’m trying to have a game I’ve made access an API that I don’t want exposed so I’m trying to request it from “proxy.php” but it keeps on getting blocked. This is the code in the .php file:
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', 'php_errors.log');
function logMessage($message) {
error_log(date('[Y-m-d H:i:s] ') . $message . PHP_EOL, 3, 'php_errors.log');
logMessage("Script started");
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
// Handle preflight requests
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
logMessage("Preflight request received");
header("Access-Control-Allow-Origin: *");
header("HTTP/1.1 204 No Content");
header("Content-Type: application/json");
logMessage("Received a request");
$inputData = file_get_contents('php://input');
logMessage("Received input: " . $inputData);
$data = json_decode($inputData, true);
$prompt = $data['prompt'] ?? null;
logMessage("Error: No prompt received");
echo json_encode(['error' => 'No prompt received']);
curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/chat/completions");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"model" => "gpt-3.5-turbo",
"messages" => [["role" => "user", "content" => $prompt]],
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
logMessage("Sending request to OpenAI API");
$response = curl_exec($ch);
logMessage("Curl error: " . curl_error($ch));
echo json_encode(['error' => 'Curl error: ' . curl_error($ch)]);
logMessage("Received response from API");
logMessage("Response: " . $response);
logMessage("Script ended");
<code><?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', 'php_errors.log');
function logMessage($message) {
error_log(date('[Y-m-d H:i:s] ') . $message . PHP_EOL, 3, 'php_errors.log');
}
logMessage("Script started");
// CORS headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
// Handle preflight requests
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
logMessage("Preflight request received");
header("Access-Control-Allow-Origin: *");
header("HTTP/1.1 204 No Content");
exit;
}
header("Content-Type: application/json");
logMessage("Received a request");
$apiKey = '***********';
$inputData = file_get_contents('php://input');
logMessage("Received input: " . $inputData);
$data = json_decode($inputData, true);
$prompt = $data['prompt'] ?? null;
if (!$prompt) {
logMessage("Error: No prompt received");
echo json_encode(['error' => 'No prompt received']);
exit;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/chat/completions");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"model" => "gpt-3.5-turbo",
"messages" => [["role" => "user", "content" => $prompt]],
"temperature" => 0.7
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
]);
logMessage("Sending request to OpenAI API");
$response = curl_exec($ch);
if(curl_errno($ch)) {
logMessage("Curl error: " . curl_error($ch));
echo json_encode(['error' => 'Curl error: ' . curl_error($ch)]);
} else {
logMessage("Received response from API");
logMessage("Response: " . $response);
echo $response;
}
curl_close($ch);
logMessage("Script ended");
?>
</code>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', 'php_errors.log');
function logMessage($message) {
error_log(date('[Y-m-d H:i:s] ') . $message . PHP_EOL, 3, 'php_errors.log');
}
logMessage("Script started");
// CORS headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
// Handle preflight requests
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
logMessage("Preflight request received");
header("Access-Control-Allow-Origin: *");
header("HTTP/1.1 204 No Content");
exit;
}
header("Content-Type: application/json");
logMessage("Received a request");
$apiKey = '***********';
$inputData = file_get_contents('php://input');
logMessage("Received input: " . $inputData);
$data = json_decode($inputData, true);
$prompt = $data['prompt'] ?? null;
if (!$prompt) {
logMessage("Error: No prompt received");
echo json_encode(['error' => 'No prompt received']);
exit;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/chat/completions");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"model" => "gpt-3.5-turbo",
"messages" => [["role" => "user", "content" => $prompt]],
"temperature" => 0.7
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
]);
logMessage("Sending request to OpenAI API");
$response = curl_exec($ch);
if(curl_errno($ch)) {
logMessage("Curl error: " . curl_error($ch));
echo json_encode(['error' => 'Curl error: ' . curl_error($ch)]);
} else {
logMessage("Received response from API");
logMessage("Response: " . $response);
echo $response;
}
curl_close($ch);
logMessage("Script ended");
?>
Can anyone see what may cause the the block?
When I try to access the file via www.domain.com/proxy.php – I can see activity in the log file. However when I try to run the game and have it call the file then there isn’t even any activity..
Thanks!
I’ve been trying to implement the needed Headers that the error message says is missing. I have done so to the ebst of my abilitys but it keeps on claiming that there are headers missing..
The proxy has the correct permissions and is readable and executable. I’m hosting on freehosting.com.