我試圖使用breezejs查詢託管在單獨的應用程序實例/域中的webapi odata服務。BreezeJS不查詢CORS OData web api服務
我已經設置了所有類似於official BreezeJS site和this blog post中描述的代碼,除了服務地址將位於另一個域中外,代碼是相同的。
下面是代碼示例:不執行
var serverAddress = 'http://mydomain.com:49074/odata/';
breeze.config.initializeAdapterInstances({ dataService: "OData" });
var manager = new breeze.EntityManager(serverAddress);
var query = breeze.EntityQuery.from('Technology').where("Id", ">", 3); //!!!not executed
manager.executeQuery(query, function (data) {
debugger;
alert('tada');
});
這樣形成查詢,但它應該工作。並得到這樣的迴應:
頭:
請求URL:http://mydomain.com:49074/odata/ $元
請求方法:GET
狀態代碼:200 OK
迴應:
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
<edmx:DataServices m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<Schema Namespace="Devup.Model" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityType Name="Technology">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Edm.Int32" Nullable="false" />
<Property Name="Name" Type="Edm.String" Nullable="false" />
</EntityType>
</Schema>
<Schema Namespace="WebAPIODataWithBreezeConsumer.Models" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityContainer Name="Container" m:IsDefaultEntityContainer="true">
<EntitySet Name="Technology" EntityType="Devup.Model.Technology" />
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
但是注意到,如果我更新查詢:
VAR的查詢= breeze.EntityQuery.from( '?科技'),其中( 「ID」, 「>」,3);
OR
變種查詢= breeze.EntityQuery.from( '技術/'),其中( 「ID」, 「>」,3);
然後我打的後端代碼(斷點),它過濾的結果,但命中後端...
有誰知道爲什麼這樣奇怪的行爲,以及如何解決這個問題