簡體   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