Не удается выполнить & ldquo; прочитать & rdquo; Команда bash shell из java [duplicate]

В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Поэтому исходный адрес https://sx.xyz.com 'не разрешен.

Я столкнулся с аналогичной проблемой с Exchange Domain Exchange в ответе Ajax как ошибка не определено. Но ответ в заголовке был кодом состояния: 200 OK

Failed to load https://www.Domain.in/index.php?route=api/synchronization/checkapikey:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://sx.xyz.in' is therefore not allowed access.

Решение для его обхода: в моем случае это было вызов функции checkapikey () через Ajax в другой домен и получение ответа с данные, на которые был сделан вызов:

if (($this->request->server['REQUEST_METHOD'] == 'POST') && isset($this->request->server['HTTP_ORIGIN'])) {

        $this->response->addHeader('Access-Control-Allow-Origin: ' . $this->request->server['HTTP_ORIGIN']);
        $this->response->addHeader('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
        $this->response->addHeader('Access-Control-Max-Age: 1000');
        $this->response->addHeader('Access-Control-Allow-Credentials: true');
        $this->response->addHeader('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');

        $headers = getallheaders();
...
}

87
задан Thomas Ahle 9 April 2014 в 12:25
поделиться

5 ответов

То, что вы хотите сделать, это перевести консоль в «сырой» режим (редактирование строки исключено и не требуется вводить ключ) в отличие от «приготовленного» режима (редактирование строки с требуемым ключом ввода). В системах UNIX «stty» 'команда может изменять режимы.

Теперь, относительно Java ... см. Неблокирующий вход консоли в Python и Java . Выдержка:

Если ваша программа должна быть на основе консоли, вам нужно переключить свой терминал из линейного режима в режим символов и не забудьте восстановить его до выхода вашей программы. Нет портативного способа сделать это в разных операционных системах.

Одним из предложений является использование JNI. Опять же, это не очень портативно. Другое предложение в конце потока, и вместе с вышеприведенным сообщением, это посмотреть на использование jCurses .

50
ответ дан stkent 27 August 2018 в 12:19
поделиться

Я написал класс Java RawConsoleInput , который использует JNA для вызова функций операционной системы Windows и Unix / Linux.

  • Вкл. Windows использует _kbhit() и _getwch() из msvcrt.dll.
  • В Unix он использует tcsetattr() для переключения консоли в неканонический режим, System.in.available(), чтобы проверить, доступны ли данные и System.in.read(), чтобы читать байты с консоли. A CharsetDecoder используется для преобразования байтов в символы.

Он поддерживает неблокирующий входной и смешанный режим raw и обычный вход в линейный режим.

9
ответ дан Christian d'Heureuse 27 August 2018 в 12:19
поделиться

Используйте jline3 :

Пример:

Terminal terminal = TerminalBuilder.builder()
    .jna(true)
    .system(true)
    .build();

// raw mode means we get keypresses rather than line buffered input
terminal.enterRawMode();
reader = terminal .reader();
...
int read = reader.read();
....
reader.close();
terminal.close();
4
ответ дан Pod 27 August 2018 в 12:19
поделиться

Нет портативного способа чтения необработанных символов с консоли Java.

Некоторые связанные с платформой обходные решения были представлены выше. Но чтобы быть действительно портативным, вам придется отказаться от консольного режима и использовать режим окон, например. AWT или Swing.

14
ответ дан rustyx 27 August 2018 в 12:19
поделиться

Вам нужно сбить консоль в сырой режим. Там нет встроенного независимого от платформы способа добраться туда. jCurses может быть интересным.

В системе unix это может работать:

    String[] cmd = {"/bin/sh", "-c", "stty raw </dev/tty"};
    Runtime.getRuntime().exec(cmd).waitFor();

Например, если вы хотите принять во внимание время между нажатиями клавиш, вот пример кода, чтобы попасть туда.

20
ответ дан Xavi López 27 August 2018 в 12:19
поделиться
Другие вопросы по тегам:

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