다중 Access-Control-Allow-Origin 헤더

Rhendar

참고로 Visual Studio 2017 및 Windows 10을 사용하고 있습니다.

웹 API와 사용자 계정이있는 해당 웹 애플리케이션이 있습니다. 로그인을 시도했을 때 No Access-Control-Allow-Origin 헤더가 없다는 오류가 발생했습니다. CORS 설정 방법을 안내하는 가이드를 찾았습니다. 이것이 제가 사용한 가이드입니다.

https://social.technet.microsoft.com/wiki/contents/articles/33771.fix-to-no-access-control-allow-origin-header-is-present-or-working-with-cross-origin- request-in-asp-net-web-api.aspx

내 WebApiConfig 파일에이 코드가 있습니다.

public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        // Configure Web API to use only bearer token authentication.
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);
    }

내 AccountController 파일에서 상단의 EnableCors에 추가했습니다.

[EnableCors(origins: "*", headers: "*", methods: "*")]
[Authorize]
[RoutePrefix("api/Account")]

마지막으로 Web.config 파일에 다음을 추가했습니다.

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
    <add name="Access-Control-Allow-Credentials" value="true" />
  </customHeaders>
</httpProtocol>

이것은 내 로그인 문제를 해결했지만 내 GETS가 작동하지 않습니다. 다음은 GET 함수의 예입니다.

jQuery.support.cors = true;
    if (window.XMLHttpRequest) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", 'http://localhost:60690/api/ProfilePicture?Username=' + username, false);
        xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
        xmlhttp.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('accessToken'));
        xmlhttp.send();
        if (xmlhttp.status == 200) {
            returnValue = jQuery.parseJSON(xmlhttp.responseText);
        }
    }

GET에서 "CORS 응답에 대해 다중 Access-Control-Allow-Origin 헤더가 허용되지 않습니다."라는 오류가 발생합니다. 어디에서 여러 Access-Control-Allow-Origin 헤더가 있는지 볼 수 없습니다. 어디를 찾아야합니까?

업데이트 1

흥미로운 것을 찾았습니다. Fiddler를 사용하여 백그라운드에서 진행되는 모든 작업과 오류를 발생시키는 GET 함수에서 헤더에 표시됩니다.

여기에 이미지 설명 입력

따라서 "Access-Control-Allow-Origin : *"은 확실히 두 번 표시되지만 문제는 그 이유입니다. 내 코드를 모두 검색했고 한 번만 선언했습니다. 이 줄을 제거하면 로그인 페이지가 깨져서 그대로 두어야합니다.

Rhendar

나는 이것을 알아 낸 것 같다. WebApiConfig 파일로 이동하여 CORS에 대한 부분을 다음과 같이 변경했습니다.

//var cors = new EnableCorsAttribute("*", "*", "*");
//config.EnableCors(cors);
config.EnableCors();

그런 다음 컨트롤러에서 EnableCors 부분을 제거하고 다시 작동하기 시작했습니다. GET 호출에서 여전히 오류가 발생하지만 두 개의 오류에서 하나의 오류로 이동하여 진행 중입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Wordpress functions.php의 다중 Access-Control-Allow-Origin CORS 헤더

Azure No 'Access-Control-Allow-Origin'헤더

S3-Access-Control-Allow-Origin 헤더

'Access-Control-Allow-Origin'헤더 없음-Laravel

$ .post 'Access-Control-Allow-Origin'헤더 없음

AWS API Gateway 'Access-Control-Allow-Origin'헤더가 없습니다.

exportLink에 대한 'Access-Control-Allow-Origin'헤더가 없습니다.

플 런커에 'Access-Control-Allow-Origin'헤더가 없습니다.

Keycloak 각도 'Access-Control-Allow-Origin'헤더가 없습니다.

$ .getJSON 요청에 'Access-Control-Allow-Origin'헤더가 없습니다.

Spring CORS 'Access-Control-Allow-Origin'헤더가 없습니다.

Angular 2 앱에 'Access-Control-Allow-Origin'헤더가 없습니다.

CORS 헤더 'Access-Control-Allow-Origin'이 없습니다.

Rails + Cloudfront-Access-Control-Allow-Origin 헤더가 없습니다.

'Access-Control-Allow-Origin'헤더가 있습니다.

Cross-Origin Request Blocked, 헤더 Access-Control-Allow-Origin 누락

Cross-Origin Request Blocked : & Reason : CORS 헤더 'Access-Control-Allow-Origin'누락

Meteor 및 소켓 IO - 'Access-Control-Allow-Origin' 헤더가 없습니다.

access-control-allow-origin *은 헤더 생략과 어떻게 다릅니까?

Flutter: 요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.

요청 된 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다.

요청 된 리소스에 Access-Control-Allow-Origin 헤더가 없습니다.

JSONP 교차 출처 오류 'Access-Control-Allow-Origin 헤더가 없습니다'

XMLHttpRequest 요청 된 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다.

Javascript-요청 된 자원에 'Access-Control-Allow-Origin'헤더가 없습니다.

요청 된 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다.-Resteasy

요청 된 리소스 (Spring)에 'Access-Control-Allow-Origin'헤더가 없습니다.

422 오류에 Access-Control-Allow-Origin 응답 헤더가 없습니다.

WebApi CORs-요청 오류시 Access-Control-Allow-Origin 헤더가 있습니다.