Ошибка «Нулевой источник не разрешен Access-Control-Allow-Origin» при использовании JQuery для обновления OData - PullRequest
0 голосов
/ 17 мая 2011

Я создал базу данных локально и использовал службы данных WCF от Microsoft для создания службы OData. Мне удалось выяснить, как читать данные, но при попытке обновления Google Chrome выдает эту ошибку:

"Нулевой источник не разрешен Access-Control-Allow-Origin."

Это происходит только тогда, когда я открываю свою HTML-страницу непосредственно с диска C (без веб-сервера). Если я иду через мой веб-сервер, то это работает. Любые идеи относительно того, как я могу заставить это работать без использования веб-сервера?

Вот мой код:

var results=BOData.StephenBO1;
results[0].txtLastStage = $("#txtLastStage").val();
results[0].txtTeamCode = $("#txtTeamCode").val();
results[0].txtClientName = $("#txtClientName").val();
var url = "http://localhost/odata/StephenService.svc/CL_Darwin1('0900000000000000000000000000276')";
var json = JSON.stringify(results[0]);
$.ajax({
  url: url,
  data: json,
  type: "PUT",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (result) {
    alert("Saved StephenBO1");
  },
  error: function (result) {
    alert("Update Failure - Status Code=" +
      result.status + ", Status=" + result.statusText);
  }
});

Буду признателен за любые мудрые и умные комментарии ... и дайте мне знать, если вам нужна дополнительная информация.

Спасибо, Стивен

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

С http://datajs.codeplex.com/documentation:

Браузеры имеют политику (обычно называемую той же политикой происхождения. Она блокирует запросы через границы домена. Из-за этого ограничения операции обновления не могут выполняться, если веб-страница обслуживаетсядомен и целевая конечная точка OData находятся в другом. У пользователей есть возможность отключить эту политику в браузере, однако обычно она включена по умолчанию. datajs разработан с таким допущением. Для поддержки этой возможности доступны следующие параметры.Сценарий:

Предоставьте веб-серверу механизм ретрансляции для перенаправления запросов в соответствующую конечную точку OData.

Используйте объект XDomainRequest. Этот параметр доступен не во всех браузерах.

Использовать перекрестный исходный объект XMLHttpRequest. Этот параметр также доступен не во всех браузерах.

Запрос согласия при первом использовании. Этот параметр доступен не во всех браузерах и, как правило, обеспечивает плохой пользовательский интерфейс.

0 голосов
/ 18 мая 2011

На мой взгляд, ТАК вопрос (и ответ) может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...