Настройка «Access-Control-Allow-Origin» для HTTP ListenerC#

Место общения программистов C#
Ответить
Anonymous
 Настройка «Access-Control-Allow-Origin» для HTTP Listener

Сообщение Anonymous »

Я хотел решение отправить данные из приложения C# на веб -страницу после того, как запрос был сделан в приложение C# (через пост Ajax с веб -страницы), а затем, используя проект, реализованный здесь, я написал простое приложение для консоли для прослушивания сообщений Ajax. Это отлично работает - я нажимаю на кнопку на моей странице, которая запускает AJAX Post в http: // localhost: 8081/, который является портом, который слушатель HTTP слушает, затем обратный вызов слушателя отвечает некоторыми данными на веб -страницу, и я могу использовать данные в функции успеха Ajax post. http: // localhost: 8081/index.html Что запросит страницу с моего сервера IIS, то только я могу запустить мой слушатель и нажать кнопку, чтобы запустить Ajax, потому что, если я просто оставлю свой сервис, и перейти к URL, моя страница не отображается, а вместо этого данные, которые мой слушатель возвращает, а не страница IIS должна служить. Это происходит из -за того, что порт, на котором слушает мой слушатель, тот же, к которому IIS связывает при обслуживании моей страницы. Поэтому я решил сохранить свою привязку IIS на порту 8081 и просто изменить моего слушателя, чтобы прослушать на 8083 и позволить своему сообщению Ajax до 8083 , так что я могу держать свой сервис IIS отдельно от постов, которые я делаю, чтобы получить данные.

Код: Выделить всё

listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8083/");
listener.Prefixes.Add("http://127.0.0.1:8083/");
listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
< /code>
И вот мой пост Ajax < /p>
.ajax({
type: "POST",
url: 'http://localhost:8008/',
data: test_data,
crossDomain: true,
dataType: 'json',
success: function(data) {

//Use data

}
});

Эта настройка должна работать, только проблема, когда я сейчас нажимаю кнопку, я получаю ошибку xmlhttprequest не может загрузить http: // localhost: 8083/. В запрашиваемом ресурсе нет заголовка «Контроль доступа. Происхождение 'http: // localhost: 8081', следовательно, не допускается доступа. В ответе был HTTP Code Code 503. 
, который следует ожидать, но я не так, как его исправить. Когда я пытаюсь отправить некоторые данные....
List imgraw = File.ReadAllBytes(@"C:\Users\USER\Pictures\image.jpg").ToList();
string base64ImageRepresentation = Convert.ToBase64String(imgraw.ToArray());

byte[] imgDataArray = Encoding.ASCII.GetBytes("data:image/jpg;base64," + base64ImageRepresentation);
byte[] responseConfigArray = Encoding.ASCII.GetBytes("HTTP/1.1\r\nCache-Control: no-cache\r\nAccess-Control-Allow-Origin: *\r\n\r\n");

byte[] buffer = new byte[responseConfigArray.Length + imgDataArray.Length];
responseConfigArray.CopyTo(buffer, 0);
imgDataArray.CopyTo(buffer, responseConfigArray.Length);

var response = context.Response;
response.ContentLength64 = buffer.Length;
response.StatusCode = 200;
response.StatusDescription = "OK";
response.OutputStream.Write(buffer, 0, buffer.Length);
...


Подробнее здесь: https://stackoverflow.com/questions/363 ... p-listener
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»