Изменить порт встроенного веб-сервера Dart

Я хочу создать веб-приложение с помощью dart. Прежде всего, это html:

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <title>Dart</title>
    <link rel="stylesheet" href="dart.css">
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="application/dart" src="dart.dart"></script>
    <script src="packages/browser/dart.js"></script>
  </head>
  <body>
    <h1>Dart</h1>

    <p>Hello world from Dart!</p>

    <div id="sample_container_id">
      <table id="table">
        <tr>
          <td>Benutzername:</td>
          <td><input type="text" id="inputuser" maxlength="40"></td>
        </tr>
        <tr>
          <td>Passwort:</td>
          <td><input type="password" id="inputpass" maxlength="40"></td>
        </tr>
        <tr>
          <td><button id="button"></button></td>
        </tr>  
      </table>
    </div>
  </body>
</html>

В моем файле дротика я хочу подключиться к сервлету, который работает на локальном сервере Glassfish.

Файл дротика выглядит так:

import 'dart:html';

final TableElement table = querySelector('#table');
final DivElement main_div = querySelector('#sample_container_id');

void main() {
  TextInputElement user = querySelector('#inputuser');
  PasswordInputElement password = querySelector('#inputpass');
  ButtonElement button = querySelector('#button');
  button.text = 'Send';
  button.onClick.listen((e) => checkUser(user, password));
}

void checkUser(TextInputElement user, PasswordInputElement password)
{
  var url = 'http://localhost:8080/dartTestServlet';
  HttpRequest request = new HttpRequest();
  request.open("POST", url);
  request.onLoadEnd.listen((e) => onUserChecked(request.response.toString()));

  String jsonData = '{"user":"' + user.value + '", "password":"' + password.value + '"}';

  request.send(jsonData);
}

Если дротик подключается к серверу, я получаю это сообщение об ошибке:

Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:3030' is therefore not allowed access.   http://localhost:8080/dartTestServlet

Я знаю, что проблема в той же политике происхождения, но я не знаю, как это исправить.

Я использую экземпляр eclipse для сервера и экземпляр Dart Editor для клиента. Как я могу изменить порт встроенного веб-сервера в редакторе Dart на 8080?

Должен ли я решить эту проблему иначе?

Спасибо за помощь заранее.


person sylo    schedule 12.02.2014    source источник
comment
Это не решит проблему, так как два сервера не могут использовать один и тот же порт. Вы должны либо обслуживать страницу дротика через сервер GlassFish, либо использовать CORS.   -  person MarioP    schedule 12.02.2014
comment
Спасибо. Я обслуживал страницу через Glassfish. Это решило проблему CORS.   -  person sylo    schedule 14.02.2014


Ответы (1)


Я не знаю о DartEditor, но вы можете использовать pub serve --port 8080 или просто pub serve (по умолчанию 8080) из каталога вашего пакета.

Веб-сервер, интегрированный в DartEditor, вероятно, скоро будет заменен на pub serve.

person Günter Zöchbauer    schedule 12.02.2014