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 |