REST PUT, похоже, не подключается к серверу

0

[Решено]

Subir Kumar Sao был совершенно прав, это была проблема CORS, а не клиентская сторона, в случае, если кто-то другой попадает в ту же проблему, разместив сервер, закодированный с помощью С#, это будет решением:

Получите сборки из поддержки CORS для веб-API ASP.NET и HttpSelfHostConfiguration них на свой серверный проект, а в рамках HttpSelfHostConfiguration вы вставляете следующее, которое в конце выглядит следующим образом:

var config = new HttpSelfHostConfiguration ("http://10.0.5.106:8000");

var enableCorsAttribute = new EnableCorsAttribute ("*", "*", "*")
{
    SupportsCredentials = true
};
config.EnableCors (enableCorsAttribute);

[Вопрос]

Я запускаю сервер, который я написал в С# с VS2013 для приложения управления LED-Light, размещенного на холсте с помощью KineticJS.

Я тестировал его с помощью расширения Postman для Chrome, и он работал безупречно, я мог ПОЛУЧИТЬ, и я также мог бы ПОЗВОЛИТЬ.

так как я впервые кодировал что-то, используя REST, я решил пойти с .ajax из jQuery, который кажется очень хорошо документированным. Но по какой-то странной причине это не сработает, и я совершенно не понимаю, потому что, может быть, я чего-то не хватает, и я не могу проверить, что происходит, поскольку ex, возвращаемый из "ошибки", пуст.

Вот код, который я использую для клиентской стороны:

$.ajax({
    url: 'http://10.0.5.106:8000/api/LED/Save',
    type: 'PUT',
    data: { N: '1', Pos: '10' },
    success: function() { alert('PUT completed'); },
    error: function(req,status,ex){alert(ex);}
});

Чтобы понять структуру моего сервера, вот его код:

private static void RestServer()
{
    var config = new HttpSelfHostConfiguration ("http://10.0.5.106:8000");

    config.MapHttpAttributeRoutes ();
    HttpSelfHostServer server = new HttpSelfHostServer (config);
    server.OpenAsync ().Wait ();
    while (true) {
    }
}

[RoutePrefix ("api/LED")]
public class LEDController : ApiController
{
    [Route ("Save")]
    public HttpResponseMessage PutSave(int N, int Pos)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }

    [Route ("Load")]
    public HttpResponseMessage PutLoad(int N, int Pos)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
    [Route ("Intense")]
    public HttpResponseMessage PutInt(int N, int I)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
    [Route ("RGB")]
    public HttpResponseMessage PutRGB(int N, int R, int G, int B, int I)
    {
        return Request.CreateResponse (HttpStatusCode.NoContent);
    }
}
  • 1
    Кажется, проблема CORS. 10.0.5.106 ли страница, вызывающая службу ajax, в том же домене 10.0.5.106 ?
  • 0
    Да, все находится в одном домене, хотя клиентское приложение находится в другом ПОРТУ, если это вообще имеет значение.
Показать ещё 3 комментария
Теги:
rest

1 ответ

1
Лучший ответ

Это похоже на проблему CORS.

Подробнее читайте здесь.

И прочитайте здесь, как включить CORS.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню