우리는 AngularJS 프런트 엔드와 웹 API 백엔드로 작업중인 인트라넷 응용 프로그램을 보유하고 있습니다. 기본적으로 기존 ASP.NET/WCF 응용 프로그램의 재 설계이며 일부 직원 만 사용합니다.웹 액세스와 함께 Access-Control-Allow-Origin 요청
우리는 Windows 인증을 사용하여이 버전에서 보안을 강화하려고했지만 이전 버전에서는 Internet Explorer 이외의 브라우저에서 작동하도록하는 데 문제가있었습니다. 예를 들어 Chrome에서는 항상 401-Unauthorized 오류가 발생합니다.
지금은 보안 기능을 건너 뛰라는 지시를 받았으므로 (사용하지 않았으므로 좋지 않음) 사용을 중지했지만 이제는 API에 대한 이야기를하려고 할 때 오류가 표시됩니다 (별도의 프로젝트).하지만 Chrome에서는 작동하지만 IE에서는 작동하지 않습니다.
XMLHttpRequest는 http://localhost:62415/api/Emails을로드 할 수 없습니다. 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 없습니다. 따라서 원점 'http://localhost:50900'은 액세스 할 수 없습니다. 응답에 HTTP 상태 코드 401이 있습니다.
API 프로젝트에서 CORS를 사용하도록 설정 했으므로 여기에서해야 할 일이 확실하지 않습니다. 로컬 개발에서는 localhost를 사용하지만 QA 및 프로덕션에서는 동일한 도메인 내에서 다른 하위 도메인의 URL을 사용합니다.
나는 내 프로젝트의 시작 클래스를 사용하고 있으며이 방법을 가지고 : 내가 모르는 뭔가가 있어야합니다
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseCors(CorsOptions.AllowAll);
app.UseWebApi(config);
}
. 원래 WebApiConfig에이 코드가 있었지만 복원해도 아무 것도 고쳐주지 않았습니다.
var cors = new EnableCorsAttribute("*", "*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
도움이 되었습니까?
돈 ' ASP.net에서 충분히 말할 수 있지만, 여기에 몇 가지 다른 대안이 있어야한다. http://enable-cors.org/server_aspnet.html 해당 요청에 대한 응답으로 실제 GET/POST 전에 나가는 OPTION은 헤더가 액세스 제어 허용 원본이 * 또는 실제 클라이언트 도메인이 무엇이든 설정해야 함을 지정해야합니다. – shaunhusain