как передать ajax POST на локальный сервер

105
13 октября 2019, 14:30

Есть проект django, сервер apache2, система Ubuntu18.04, в проекте js скрипт, из которого нужно отправить POST-запрос в php скрипт на локальном сервере. Присвоил айпишнику 127.0.0.1 домен myserver.com в /etc/hosts, настроил в апаче корневую папку /web. Но попытка отправить запрос на сервер приводит к ошибке

POST http://myserver.com/script/ net::ERR_NAME_NOT_RESOLVED

Если вместо домена поставить адрес локалхоста, то данная ошибка не возникает, но возникает ошибка CORS:

POST http://localhost/script/ 404 (Not Found)
Access to XMLHttpRequest at 'http://localhost/script/' from origin 'http://site.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Но на моем компе на винде при таких же настройках все прекрасно работает.

script.js:

sendMail: function (formid) {
        var formId = "#" + formid;
        var fd = new FormData(document.querySelector(formId));
        var url = 'http://myserver.com/script/';
        $.ajax({
            url: url,
            type: "POST",
            data: fd,
            cache: true,
            processData: false,
            contentType: false,
            beforeSend: function () {
...

index.php:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>myserver</title>
</head>
<body>
  <h2>myserver</h2>
  <?php
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
    header("Access-Control-Allow-Headers: *");
    require_once 'script.php';
  ?>
</body>
</html>
Answer 1
var url = '/script/index.php';

Лучше всего url - делать "Относительные ссылки к файлам", и тогда при переносе сайта с одного сервера к другому, ничего меняться не будет.

Answer 2

А все до безобразия банально. Клиентский js естественно стучится на локальный хост клиента, а не сайта, и естественно ничего там не видит. Отсюда и все ошибки. Надо сначала передать запрос на сайт, а уже из сайта - на локальный сервер. Либо вешать серверу белый айпишник.

READ ALSO
php - не создается zip архив

php - не создается zip архив

При создании zip архива в том же каталоге нет никаких ошибок, но архив не создаетсяВ php

109
Как разделить доступ к одной таблице

Как разделить доступ к одной таблице

Язык PHP, Фреймворк Yii2, бд MySQLНо по сути это не важно, вопрос по организации запроса данных

112
Когда конкретно и в каком файле запускать сессию в yii?

Когда конкретно и в каком файле запускать сессию в yii?

Настраиваю мультиязычность на Yii2 BasicХочу в сессии хранить язык интерфейса, выбранный пользователем

122
Не отправляет в БД через PHP

Не отправляет в БД через PHP

Вот такой код у меня есть: HTML

111