Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > idHTTPServer headers


Автор: RelictOs 28.12.2012, 09:59
Добрый день. Поскольку создание прошлой темы ровно ничего не дало - пришлось дальше искать ответ самому. Впринципе, я его нашел, но есть одна проблема. Теперь я не знаю, как сформировать header для CORS.
Вот моя попытка:

Код

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  showmessage(ARequestInfo.RawHeaders.Text);

  AResponseInfo.RawHeaders.Values['Access-Control-Allow-Origin'] := '*';
  AResponseInfo.WriteHeader;
  AResponseInfo.ContentText := 'test';
  AResponseInfo.WriteContent;
end;


код страницы:
Код

    var url = 'http://127.0.0.1:9200';

    function doCallOtherDomain(){
        var XHR = window.XDomainRequest || window.XMLHttpRequest
        var xhr = new XHR();

        xhr.open('GET', url, true);

        // замена onreadystatechange
        xhr.onload = function() {
            document.getElementById('response').innerHTML = xhr.responseText
        }

        xhr.onerror = function() {
            alert("Error");
            alert(xhr.statusCode);
        }

        xhr.send()
    }

    function callOtherDomain() {
        try {
            doCallOtherDomain()
        } catch (e) {
            alert("В этом браузере данная фича не поддерживается.")
        }
    }


По сути, задача заключается в том, чтобы отправить запрос на другой порт локалхоста и получить ответ. Но сколько ни пробовал - все время вылезает Error и statusCode - undefined  smile 

http://ru.wikipedia.org/wiki/Cross-origin_resource_sharing

Прошу вас, помогите. Уже 3й день ищу ответ.

Автор: CodeGold 26.5.2015, 08:06
Код

procedure Tform_main.IdHTTPServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo;
  AResponseInfo: TIdHTTPResponseInfo);
begin


  AResponseInfo.ResponseNo := 200;
  AResponseInfo.CacheControl := 'no-cache';
  AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Origin: *');
  AResponseInfo.CustomHeaders.Add('Content-Type: application/json; charset=utf-8');

  AResponseInfo.ContentText := 'test.';
  AResponseInfo.WriteContent;

end;


для следующего поколения...

Автор: Артем Сагайда 28.10.2016, 09:24
Спасибо, выручил!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/idHTTPServer-headers-id50f200ad6ccc195164000f38#findElement_E7045_5812ef1e3521881045239738_0

Автор: Артем Сагайда 28.10.2016, 09:24
Спасибо, выручил!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/idHTTPServer-headers-id50f200ad6ccc195164000f38#findElement_E7045_5812ef1e3521881045239738_0

Автор: Артем Сагайда 28.10.2016, 09:24
Спасибо, выручил!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/idHTTPServer-headers-id50f200ad6ccc195164000f38#findElement_E7045_5812ef1e3521881045239738_0

Автор: Артем Сагайда 28.10.2016, 09:24
Спасибо, выручил!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/idHTTPServer-headers-id50f200ad6ccc195164000f38#findElement_E7045_5812ef1e3521881045239738_0

Автор: Артем Сагайда 28.10.2016, 09:24
Спасибо, выручил!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/idHTTPServer-headers-id50f200ad6ccc195164000f38#findElement_E7045_5812ef1e3521881045239738_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)