나는 동일한 문제가있었습니다. X-InlineCount 헤더가 노출되도록 서버를 구성해야합니다. 프로젝트 ASP .NET 웹 API를 사용하는 경우 당신은 당신의 Web.config에 다음 라인을 추가해야한다 또한
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
<add name="Access-Control-Expose-Headers" value="X-InlineCount" />
</customHeaders>
</httpProtocol>
, 나는 파이어 폭스에 문제가 있었다, 그러나 파이어 폭스의 최신 버전에 문제가있다 해결되었습니다.
(요는 단지 예입니다, 모든 라인을 사용할 필요가 없습니다) 그것은 로그 이었기 때문에)
----- 편집 -----는
나는 잊고 있었던 전에. 브라우저는 CORS 호출을 수행 할 때 먼저 CORS 호출을 수행 할 수 있는지와 허용되는 항목이 있는지 확인하기 위해 옵션 호출을 보냅니다. 따라서이 OPTION 호출을 관리하려면 WEB API 프로젝트에 메시지 핸들러를 구현해야합니다. 구현은 다음입니다 : 당신이 당신의 Web.config에 있음을 넣으면
public class OptionsHttpMessageHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Method == HttpMethod.Options)
{
var apiExplorer = GlobalConfiguration.Configuration.Services.GetApiExplorer();
var controllerRequested = request.GetRouteData().Values["controller"] as string;
var supportedMethods = apiExplorer.ApiDescriptions
.Where(d =>
{
var controller = d.ActionDescriptor.ControllerDescriptor.ControllerName;
return string.Equals(
controller, controllerRequested, StringComparison.OrdinalIgnoreCase);
})
.Select(d => d.HttpMethod.Method)
.Distinct();
if (!supportedMethods.Any())
return Task.Factory.StartNew(
() => request.CreateResponse(HttpStatusCode.NotFound));
return Task.Factory.StartNew(() =>
{
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Headers.Add("Access-Control-Allow-Origin", "*");
resp.Headers.Add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, Security,Token-Access");
resp.Headers.Add("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
resp.Headers.Add("Access-Control-Expose-Headers", "X-InlineCount");
return resp;
});
}
return base.SendAsync(request, cancellationToken);
}
}
당신은 다음 섹션을 생략 할 수 있습니다.
resp.Headers.Add("Access-Control-Allow-Origin", "*");
resp.Headers.Add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, Security,Token-Access");
resp.Headers.Add("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
resp.Headers.Add("Access-Control-Expose-Headers", "X-InlineCount");
귀하의 문제를 해결하는 데 도움이되기를 바랍니다.
PD : 영어로 죄송합니다. 제 첫 번째 언어가 아닙니다.
한 지점에서 breeze는 jquery getResponseHeader 함수를 호출하고 X-InlineCount를 키 속성으로 전달합니다. 그러나 responseHeadersString은 매우 불완전하며이 속성을 포함하지 않으므로 응용 프로그램의 버그가 발생합니다. 문제는 Chrome의 응답 헤더에서 responseHeadersString에없는 많은 다른 속성과 함께 속성이 명확하게 여기에 있음을 알 수 있습니다. jquery의 버그입니까? 나는 최신 버전을 가지고있다. – Sam