繁体   English   中英

使用JQuery更新OData时出现错误“ Access-Control-Allow-Origin不允许Origin null”

[英]Error “Origin null is not allowed by Access-Control-Allow-Origin” when using JQuery to update OData

我已经在本地创建了一个数据库,并使用了Microsoft的WCF数据服务来创建OData服务。 我设法弄清楚了如何读取数据,但是在尝试更新时,Google Chrome出现此错误:

“ Access-Control-Allow-Origin不允许使用原始null。”

仅当我直接从C驱动器(没有Web服务器)打开HTML页面时,才会发生这种情况。 如果我通过我的Web服务器,那么它可以工作。 关于如何在不使用Web服务器的情况下使它工作的任何想法?

这是我的代码:

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);
  }
});

任何明智和明智的评论将不胜感激...如果您需要任何其他信息,请告诉我。

谢谢斯蒂芬

我认为这个SO问题(和答案)可以解决您的问题。

来自http://datajs.codeplex.com/documentation

浏览器具有一项策略(通常称为同一原始策略。该策略阻止跨域边界的请求。由于此限制,如果网页由域提供服务且目标OData端点位于另一个域中,则无法执行更新操作。用户可以在浏览器中禁用此策略,但是默认情况下通常会启用此策略。datajs的设计是基于这种假设的,以下选项可用于支持此方案:

让Web服务器提供一种中继机制,以将请求重定向到适当的OData端点。

使用XDomainRequest对象。 此选项并非在所有浏览器中都可用。

使用跨源XMLHttpRequest对象。 此选项也不是在所有浏览器中都可用。

提示首次使用同意。 此选项并非在所有浏览器中都可用,并且通常会提供较差的用户体验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM