zkrvndm
@zkrvndm
Архитектор решений

Как перезапустить OpenServer удаленно обычным GET-запросом?

У меня практически готово решение, но возникло небольшое затруднение.

Я знаю, что у OpenServer есть веб-морда:
5edfb9349f637576674726.png
Для перезапуска достаточно перейти в по ссылке такого типа:
localhost:1515/restart
Для подтверждения прав, там используется авторизация Basic Authentication.

Соответственно, мне ничто не мешает просто удаленно сделать GET-запрос на мой сервер с нужными заголовками:
jQuery.ajax({
	url: 'http://123.123.123.123:1515/restart',
	headers: {
		'Authorization': 'Basic ' + btoa('admin:admin')
	},
	success: function(response){
		console.log(response);
	},
	error: function(obj) {
		alert('Ошибка!');
	}
});


Но увы, мешает долбанный CORS! Я банально не могу сделать этот самый GET-запрос с чужого домена, а мне как раз и надо с чужого! В общем, подскажите пожалуйста, какой файл в OpenServer отвечает за показ веб-морды? Где я должен вписывать разрежающие заголовки для веб-морды?

<?php header('Access-Control-Allow-Origin: *');
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
zkrvndm
@zkrvndm Автор вопроса
Архитектор решений
Блин, надо было почитать сначала, как работает Basic Auth. Решение оказалось на удивление простым, если я хочу удаленно перезапустить сервер, то инициировать нужный запрос НЕ с родного домена можно вот так:
open_server_restart_window = window.open('');
open_server_restart_window.location.href = 'http://login:password@localhost:1515/restart';
setTimeout(function() { open_server_restart_window.close(); }, 3000);

По аналогичному принципу можно сгенерировать iframe и использовать внутри него форму для переадресации. Само с собой надо заменить логин, пароль и адрес сервера в ссылке на свои. При таком запросе CORS никак не мешает, а сигнал на перезапуск вполне себе доходит до сервака и прекрасно работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Если на том же сервере есть PHP, то что мешает скрипт написать, который будет дёргать нужный внутренний URL curl'ом?
Ответ написан
@Yadalay
Php, Mysql, Html, Css, Js/Jquery/Ajax, Laravel
Вариант с консольной командной Вам не подходит? Например:
curl -v -X GET -H "Authorization: Basic TOKEN" "Content-Type: application/json" "http://123.123.123.123:1515/restart"

Где TOKEN = значение из Вашего примера: btoa('admin:admin')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы