Есть проект 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>
var url = '/script/index.php';
Лучше всего url - делать "Относительные ссылки к файлам", и тогда при переносе сайта с одного сервера к другому, ничего меняться не будет.
А все до безобразия банально. Клиентский js естественно стучится на локальный хост клиента, а не сайта, и естественно ничего там не видит. Отсюда и все ошибки. Надо сначала передать запрос на сайт, а уже из сайта - на локальный сервер. Либо вешать серверу белый айпишник.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости