갑자기 CORS로 화가났을 때의 대처법(.NET Core)
발생 이벤트
Chrome에서는 CORS, Edge에서는 404가 돌아왔다.
Chrome
Access to XMLHttpRequest at 'https://localhost:44342/api/{長いため以下略}' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Edge
그 외의 검색 메소드등은 보통으로 움직이고 있는&쿼리를 줄이면 리퀘스트가 다니기 때문에, 쿠에리에 어떠한 문제가 있는 것은 아닐까라고 들었다.
원인
결론을 보면 Get의 쿼리 문자열이 너무 길면 .NET에서는 404.15라는 것을 반환하고 있다는 것을 알았다.
404의 선입견에서 이것은 예상치 못했다.
공식 문서 에도 그렇게 기재가 있었다.
404.15 - 쿼리 문자열이 너무 깁니다.
아무래도 쿼리는 2048바이트까지다.
htps : // / cs. mic로소 ft. 코 m/엔-u s/아 sp 네 t/우우 테파 rs/아 sp 네 t4/오 ぇr ゔ ぃ w #0.2__와 c253429244
htps : // / cs. 미 c 로소 ft. 이 m / 그럼 jp / t 네 t / 아피 / sys m. 음 b. 안녕하세요. h tp 룬치 메세 c 치온. 마 x 쿠에 ryst 린 g ぇ gth?ぃぃ w = 네 tf 라메를 rk-4.8
대처법
구그라고 보면 web.config에 설정을 기재하면 된다는 것.
IIS7 이상에서 URL 쿼리 문자열이 길면 404 오류
그러나 .NET Core의 경우는 web.config가 없지만, 만들어 주면 읽어주는 것 같습니다.
ASP.NET Core 응용 프로그램에서도 web.config를 사용자 지정하고 싶습니다.
프로젝트 바로 아래에 web.config 파일을 만들고 다음 설정을 구성합니다.
maxQueryString
파라미터를 늘려 주면 OK입니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="10000" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: {略}-->
이제 다시 실행하면 긴 쿼리 문자열에서도 받아 들여 Chrome에서 CORS가 나오지 않습니다.
Reference
이 문제에 관하여(갑자기 CORS로 화가났을 때의 대처법(.NET Core)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SuyamaDaichi/items/2ca96042b378add5a1e5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Access to XMLHttpRequest at 'https://localhost:44342/api/{長いため以下略}' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
결론을 보면 Get의 쿼리 문자열이 너무 길면 .NET에서는 404.15라는 것을 반환하고 있다는 것을 알았다.
404의 선입견에서 이것은 예상치 못했다.
공식 문서 에도 그렇게 기재가 있었다.
404.15 - 쿼리 문자열이 너무 깁니다.
아무래도 쿼리는 2048바이트까지다.
htps : // / cs. mic로소 ft. 코 m/엔-u s/아 sp 네 t/우우 테파 rs/아 sp 네 t4/오 ぇr ゔ ぃ w #0.2__와 c253429244
htps : // / cs. 미 c 로소 ft. 이 m / 그럼 jp / t 네 t / 아피 / sys m. 음 b. 안녕하세요. h tp 룬치 메세 c 치온. 마 x 쿠에 ryst 린 g ぇ gth?ぃぃ w = 네 tf 라메를 rk-4.8
대처법
구그라고 보면 web.config에 설정을 기재하면 된다는 것.
IIS7 이상에서 URL 쿼리 문자열이 길면 404 오류
그러나 .NET Core의 경우는 web.config가 없지만, 만들어 주면 읽어주는 것 같습니다.
ASP.NET Core 응용 프로그램에서도 web.config를 사용자 지정하고 싶습니다.
프로젝트 바로 아래에 web.config 파일을 만들고 다음 설정을 구성합니다.
maxQueryString
파라미터를 늘려 주면 OK입니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="10000" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: {略}-->
이제 다시 실행하면 긴 쿼리 문자열에서도 받아 들여 Chrome에서 CORS가 나오지 않습니다.
Reference
이 문제에 관하여(갑자기 CORS로 화가났을 때의 대처법(.NET Core)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SuyamaDaichi/items/2ca96042b378add5a1e5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="10000" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: {略}-->
Reference
이 문제에 관하여(갑자기 CORS로 화가났을 때의 대처법(.NET Core)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SuyamaDaichi/items/2ca96042b378add5a1e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)