asp.net web api - Breeze Error message "; " with status OK in Chrome -
i using cors support in webapi , strange result set entitymanager thought status code 200 , data server. response gets
the error message (truncated):
{message: "; ", statustext: "ok", status: 200, url:"http://localhost:61808/odata/servers?$filter=id%20gt%2080&$top=20&$expand=owner%2capplications"} my datacontext:
(function () { angular.module('app').factory('datacontext', datacontext); datacontext.$inject = ['entitymanagerfactory']; function datacontext(entitymanagerfactory) { var entityquery = breeze.entityquery; var manager = entitymanagerfactory.newmanager(); return { getservers: getservers }; function getservers() { return entityquery .from('servers') .expand('owner, applications') .where('id', 'gt', 80) .take(20) .totype('server') .using(manager) .notracking() .execute() .then(success) .catch(error); } function success(response) { return response.results; } function error(error) { console.log(error); } my webapi web.config:
<httpprotocol> <customheaders> <add name="access-control-allow-origin" value="*" /> <add name="access-control-allow-headers" value="content-type, dataserviceversion, maxdataserviceversion" /> <add name="access-control-allow-methods" value="get, post, put, delete, options, merge" /> </customheaders> </httpprotocol> this code runs fine in internet explorer. however, error thrown in chrome though payload delivered! ideas?
there bug in current version of datajs 1.1.2 filed under issues on codeplex @ https://datajs.codeplex.com/workitem/756.
in datajs.js replace readresponseheaders with:
var readresponseheaders = function (xhr, headers) { /// <summary>reads response headers array.</summary> /// <param name="xhr" type="xmlhttprequest">http request response available.</param> /// <param name="headers" type="array">target array fill name/value pairs.</param> var responseheaders = xhr.getallresponseheaders().split(/\r?\n/); var i, len; (i = 0, len = responseheaders.length; < len; i++) { if (responseheaders[i]) { var header = responseheaders[i].split(": "); headers[header[0]] = header[1]; } } // fix handle firefox cors bug var requiredheaders = [ 'content-type', 'dataserviceversion' /*, 'content-length' , 'cache-control' , 'access-control-expose-headers' , 'x-content-type-options' , 'date'*/ ]; (i = 0; < requiredheaders.length; i++) { if (headers[requiredheaders[i]] === undefined && xhr.getresponseheader(requiredheaders[i])) { headers[requiredheaders[i]] = xhr.getresponseheader(requiredheaders[i]); } } }; and in web.config in webapi add:
<add name="access-control-expose-headers" value="dataserviceversion" />
Comments
Post a Comment