![](/img/trans.png)
[英]Origin null is not allowed by Access-Control-Allow-Origin (Synchronous, no jQuery)
[英]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.