JQuery Ajax Post to php файл на другом сервере не работает

I’M programming a tool, in which you can link my javascript file to your website, and this javascript file does a ajax post to a php file on MY server.

Сумасшедшая вещь заключается в том, что когда я связываю файл javascript со страницей на моем веб-сервере, он работает, но когда я связываю файл javascript на другом веб-сайте (у которого есть другой сервер), он не работает… Здесь код:

phpwrite2.php: (файл, который должен создать файл на моем сервере)

   <?php

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: POST');
    header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
    exit();
}

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


$myFile = $_POST['filename'];
$myFile = "users/".$myFile;

chmod("users/",0777);

$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $_POST["name"];
fwrite($fh, $stringData."n");
fclose($fh);
?>  

И JQuery, который делает сообщение ajax к phpwrite2.PHP-файл:

function writeToFile() {

    $.ajax({
        type: 'POST',
        url: 'http://alexehgm.myhostpoint.ch/phpwrite2.php',
        crossDomain: true,
        data: '{"name":name, "filename" : filename}',
        dataType: 'txt',
        success: function(responseData, textStatus, jqXHR) {
            var value = responseData.someKey;
        },
        error: function (responseData, textStatus, errorThrown) {
            alert('POST failed.');
        }
    });

Спасибо за чтение моего вопроса, я надеюсь, что вы профи знаете soloution или найти ошибку.
Заранее спасибо!

1 ответ

  1. В основном это сводится к отправке правильных заголовков CORS на запрос опций (запрос preflight) в дополнение с заголовком на последовательных запросах:

    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: POST');
        header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
        exit();
    }
    
    header('Access-Control-Allow-Origin: *');
    // Your code here
    

    Объяснение:

    • Acess-Control-Allow-Origin: Задает Домены, которым разрешено
      доступ к этому ресурсу.
    • Acess-Control-Allow-Methods: Задает HTTP-методы, которым разрешен доступ к ресурсу.
    • Access-Control-Allow-Headers: Это дополнительные разрешенные заголовки. Вы можете использовать запрошенные заголовки, чтобы просто разрешить все запрошенные. Этого не может быть *.