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
'programing' 카테고리의 다른 글
프로세스 데몬 생성 방법 (0) | 2022.07.11 |
---|---|
Vue 동적 mapGetters (0) | 2022.07.11 |
새 문자열 값을 올바르게 할당하려면 어떻게 해야 합니까? (0) | 2022.07.11 |
"TypeError: 정의되지 않은 속성 'get'을 읽을 수 없습니다", Axios, Vue.JS (0) | 2022.07.11 |
Android Studio에서 작성자 템플릿 변경 (0) | 2022.07.11 |