[英]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.