2015-03-21 1 views
1

Я пытаюсь опубликовать простой объект JSON для моей локальной службы asp.net web.api.

вот код мира.

createTable: function (table) { 
     var res = $http.post('http://localhost:50827/api/v0.1/xxxx/create-some-table', table); 
     res.success(function (data, status, headers, config) { 
      alert("Sent : " + JSON.stringify({ data: data })); 
     }); 
     res.error(function (data, status, headers, config) { 
      alert("failure message: " + JSON.stringify({ data: data })); 
     }); 
    } 

Asp.Net Web Api имеет Cors enabled, и этот мир кода хорошо работает с Internet Explorer. Но Chrome Chrome Google оставляет ошибку: ОПЦИИ: http://localhost:50827/api/v0.1/xxxx/create-some-table 404 (не найдено)

У того же контроллера webapi есть некоторые другие методы GET, и он работает хорошо.

Любая идея?

Цените любую помощь.

Павло

+0

Какую версию ASPAP WebAPI вы используете? – GregL

ответ

0

Так что похож, что это известная проблема, когда Chrome посылает «предполетный» запрос, используя глагол OPTIONS перед отправкой фактического запроса перекрестного происхождения.

Бывают случаи, когда он не отправит запрос перед полетом, но, к сожалению, отправка JSON не является одним из этих случаев.

Кажется, что у вас нет сервера ASP.NET WebAPI, настроенного для обработки этих типов запросов перед полетом. Вероятно, потому что это, по-видимому, не по умолчанию, чтобы поддерживать его поддержку.

К счастью, в Интернете есть много полезной информации, чтобы помочь вам исправить это. Вот две ссылки, которые помогут вам начать работу.

Соответствующий StackOverflow вопрос: AJAX in Chrome sending OPTIONS instead of GET/POST/PUT/DELETE?

Это кажется полезной страницы на how to configure CORS properly if you are using ASP.NET WebAPI 2.

О, и я предполагаю, что если запрос перед полетом не удался, Chrome не выполнит надлежащий запрос CORS. Я не видел нигде в своих быстрых исследованиях, чтобы подтвердить или опровергнуть это, но это имеет логичный смысл для меня, поскольку весь смысл предполетного запроса состоит в том, чтобы выяснить, какие запросы CORS поддерживаются сервером, или если он вообще поддерживается.

Смежные вопросы