programing

Allow AnyOrigin Cors가 작동하지 않음Axios Vuejs

kingscode 2022. 7. 11. 23:25
반응형

Allow AnyOrigin Cors가 작동하지 않음Axios Vuejs

서버가 셋업되어 실가동중이며, 이 웹 서버라고 불리는 어플리케이션이 많이 있습니다.아래 코드는 모든 오리진 요청을 허용함을 나타냅니다.

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseExceptionHandler("/Home/Error");

        app.UseStaticFiles();

        app.UseCors(builder =>
        {
            builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader();
        });

이것은 현재 설정되어 있는 모든 서버에서 동작합니다.사내 네트워크에 접속되어 있어, 사내의 다른 서버가 이 서비스를 사용합니다.

델의 어플리케이션을 천천히 현대화하기 위해 개념 실증(Proof of concept는Vue이것만 빼고axios요청에 오류가 발생하고 있습니다.이 메서드를 호출하는 다른 서버도 .net을 사용하지만 동일한 요청을 구축해야 합니다.

여기 오류가 있습니다.

https://{server}/api/application/36626을 로드하지 못했습니다. 요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.따라서 오리진 'http://localhost:8080'은 액세스가 허용되지 않습니다.

이것은 명백히 공리주의자들의 미친 이야기다.나는 어떤 출처라도 인정한다.단순한 요청의 w3 규격은 기능하지 않을 수 있기 때문에, 「simple-requests」만을 사용하고 싶다고는 생각할 수 없습니다.저는 이것이 잘못된 오류일 수 있다고 생각했습니다.octet-stream서버에서 반환되었습니다.코드는 다음과 같습니다.

<script>
import axios from 'axios'

export default {
  name: 'AppList',
  data () {
    return {
      applist: [],
      errors: []
    }
  },
  created: function() {
    axios.get('https://{server}/api/application/36626')
      .then(r => { console.log(response); })
      .catch(ex => {
        this.errors.push(ex);
      })
  }
}
</script>

편집 나는 이 기계에 대한 모든 권한을 가지고 있으며, 나는 내 로컬 컴퓨터에서 우편 배달부 GET 요청을 문제없이 사용할 수 있음을 확인했습니다.

편집 2 작동 중인 컬 명령curl -X GET --header 'Accept: application/octet-stream' 'https://{server}/api/Application/36626'

이 판명되었습니다.Net Core Server가 올바르게 설정되지 않았습니다.로컬머신에서 브라우저를 사용하려고 할 때까지CORS문제가 발생합니다.

CORS의 실장이 바뀌어서 몰랐는지, 처음부터 제대로 하고 있지 않은지는 모르겠지만, 가이드를 따랐던 것은 확실합니다.

가장 먼저 변경한 것은 사용할 앱을 설정하기 전에 Cors 정책이 추가되었는지 확인하는 것입니다.MVC.

두 번째는 옵션이라고 생각됩니다만, 베스트 프랙티스는 정책 로직도 변경했습니다.ConfigureServices방법.

나의 마지막 코드는 아래와 같다.질서를 유지하기 위해 최대한 신경을 쓰고 있어요.

 public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                    builder => builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials());
            });
            services.AddOptions();
            services.AddSwaggerGen();
            ///Authentication configuration went here.
            services.AddSingleton<IConfiguration>(Configuration);
            services.AddMvc();

        }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseExceptionHandler("/Home/Error");
        app.UseStaticFiles();
        app.UseCors("CorsPolicy");

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        app.UseSwagger((httpRequest, swaggerDoc) =>
        {
            swaggerDoc.Host = httpRequest.Host.Value;

        });
        app.UseSwaggerUi(swaggerUrl: "/{appname}/swagger/v1/swagger.json");

PUT 및 DELETE 메서드에서는 Cors 활성화가 작동하지 않았습니다.Web.config 파일에 설정 행을 추가하여 WebDav 모듈을 삭제했습니다.

저는 이것을 기존의 태그 시스템 안에서 사용했습니다.web.config 파일의 webServer 태그

<modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
</modules>

이 사이트에서 행을 찾았습니다.

web.config https://hovercraft.ie/asp-net-core-web-api-put-delete-methods-not-allowed-405-error/ 를 변경합니다.

이게 도움이 됐으면 좋겠다.

언급URL : https://stackoverflow.com/questions/47294125/allowanyorigin-cors-not-working-axios-vuejs

반응형