CORS asp.net core webapi - отсутствует заголовок Access-Control-Allow-Origin - PullRequest
2 голосов
/ 16 мая 2019

У меня ASP.net WebApi Core с включенным CORS.Это шаблон Visual Studio ASP.net Core Web API.Единственный добавленный код - это код для поддержки CORS:

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddCors();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
       /*  other stuff   */

        app.UseCors(builder => builder
            .WithOrigins("https://localhost:44310")
            .AllowAnyMethod()
            .AllowAnyHeader());

        app.UseMvc();
    }
        }

Мой API размещен на localhost: 44361 и mycalling WEB на localhost: 44310 .Есть разные порты, поэтому мой запрос приходит из разных источников.Вот почему в ответе должен быть заголовок Access-Control-Allow-Origin .Это отсутствует, и я вижу ошибку в консоли браузера:

Access to fetch at 'https://localhost:44361/api/values' from origin 'https://localhost:44310' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

В чем проблема?

Заголовки запроса:

GET https://localhost:44361/api/values HTTP/1.1
Host: localhost:44361
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Origin: https://localhost:44310
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
Accept: */*
Referer: https://localhost:44310/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

Заголовки ответа:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?RDpcRGV2ZWxvcG1lbnRcQyNfcHJvZ3JhbW1pbmdcU0FNUExFU1xDb3JzQXBpU2ltdWxhdG9yXENvcmVBcGlcYXBpXHZhbHVlcw==?=
X-Powered-By: ASP.NET
Date: Thu, 16 May 2019 08:37:54 GMT

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Вы можете попробовать это,

  services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder
                    .AllowAnyMethod()
                    .AllowCredentials()
                    .SetIsOriginAllowed((host) => true)
                    .AllowAnyHeader());
        });

и используйте его

app.UseCors("CorsPolicy");

этот код для любого происхождения. У меня просто было что-то подобное, когда я использовал cors непосредственно в app.UseCors (), у меня была проблема, затем я попробовал это, и это сработало. ps не использовать app.UseCors () после app.UseMvc ()

0 голосов
/ 16 мая 2019

Это может произойти из-за ошибки на стороне сервера; в этом случае заголовки ответа очищаются, а также очищаются заголовки ответа CORS. Попробуйте включить исключения и отладьте приложение, чтобы найти ошибку.

См. Также: ядро ​​asp net - в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...