Я включил CORS, но все равно получаю ограничения

#reactjs #typescript #asp.net-core #asp.net-web-api #react-typescript

#reactjs #typescript #asp.net-core #asp.net-web-api #реагировать-машинопись

Вопрос:

Это моя конфигурация в asp.net основной веб-API:

         public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
            {
                builder
                       .AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));
 

и

         public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseCors("CorsPolicy");
 

И, наконец, мой javascript (typescript react):

 const requestOptions = {
    method: 'POST',
    mode: 'cors' as RequestMode,
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ Username: username, Password: password })
};

return fetch(`${this.baseUrl}/auth/register`, requestOptions).then(res => {
    debugger;
    if (res.ok === false) {
        return Promise.reject("Invalid request");
    }

    return res.json();
});
 

Я не могу понять это. Я попытался изменить режим на стороне клиента. Я пробовал.С помощью ORIGINS(«http://localhost:3000 «) в API, и теперь мне не повезло. Чего мне здесь не хватает? Я запустил свое приложение react с помощью npm start, не так ли? Не должно быть?

Ответ:

 Request URL: https://localhost:44346/auth/register
Request Method: POST
Status Code: 404 
Remote Address: [::1]:44346
Referrer Policy: strict-origin-when-cross-origin
 

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

 access-control-allow-origin: *
date: Thu, 17 Dec 2020 22:23:37 GMT
server: Microsoft-IIS/10.0
x-powered-by: ASP.NET
 

Комментарии:

1. Вы также получаете эту ошибку, когда запрашиваете что-то, что не является 404?

2. Что именно представляет собой сообщение об ошибке cors?

3. Привет, @KevinB, это странная часть. Я получаю 204 при вызове ОПЦИИ (предполетный), но 404 при вызове POST. Заголовки ответа и ответа публикуются в сообщении

4. Верно, но в чем на самом деле ошибка? без фактической ошибки cors мы можем только размышлять о том, почему браузер отклоняет ее.

5. Ваши заголовки, похоже, в порядке, и ваш последний комментарий, похоже, подтверждает, что предполетная проверка не завершается сбоем, так что … я подозреваю, что это может быть вообще не проблема, связанная с cors.

Ответ №1:

Порядок промежуточных программ важен.

В вашем Configure() методе сначала добавьте app.UseRouting(); и после этого app.UseCors("CorsPolicy");

Комментарии:

1. Попробовал, никакой разницы

Ответ №2:

попробуйте удалить

   mode: 'cors' as RequestMode
 

из вашего javascript
и вместо

 body: JSON.stringify({ Username: username, Password: password })
 

используйте

 body: { Username: username, Password: password }
 

Ответ №3:

 import { ExpectedConditions as EC, browser, by, element } from 'protractor';
// ...

async function getTextFromClipboard() {
  // ...
  await browser.wait(
    EC.visibilityOf(element(by.css('.btn-copy'))),
    waitTimeout
  );
  await element(by.css('.btn-copy')).click();
}