Как исправить ошибку unknown response


#1

Пользователь офлайн
 
Antonio Bacardi 

Отправлено 25 апреля 2019 — 16:20

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Ошибка! UnknownResponse как решить ?

0



#2

Пользователь офлайн
 
Mars_Flex 

Отправлено 26 апреля 2019 — 16:09

  • Местный
  • Вставить ник
  • Раскрыть информацию

Русские символы убери из hostname.

0


  • ← Предыдущая тема
  • Вопросы по скриптингу
  • Следующая тема →

Страница 1 из 1

  • Вы не можете создать новую тему
  • Тема закрыта


1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей

The problem was related to CORS. I noticed that there was another error in Chrome console:

No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:4200’ is therefore not allowed access. The response had HTTP status code 422.`

This means the response from backend server was missing Access-Control-Allow-Origin header even though backend nginx was configured to add those headers to the responses with add_header directive.

However, this directive only adds headers when response code is 20X or 30X. On error responses the headers were missing. I needed to use always parameter to make sure header is added regardless of the response code:

add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;

Once the backend was correctly configured I could access actual error message in Angular code.

answered Nov 14, 2017 at 21:06

grdl's user avatar

grdlgrdl

3,5033 gold badges24 silver badges24 bronze badges

9

In case anyone else ends up as lost as I was… My issues were NOT due to CORS (I have full control of the server(s) and CORS was configured correctly!).

My issue was because I am using Android platform level 28 which disables cleartext network communications by default and I was trying to develop the app which points at my laptop’s IP (which is running the API server). The API base URL is something like http://[LAPTOP_IP]:8081. Since it’s not https, android webview completely blocks the network xfer between the phone/emulator and the server on my laptop. In order to fix this:

Add a network security config

New file in project: resources/android/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <!-- Set application-wide security config -->
  <base-config cleartextTrafficPermitted="true"/>
</network-security-config>

NOTE: This should be used carefully as it will allow all cleartext from your app (nothing forced to use https). You can restrict it further if you wish.

Reference the config in main config.xml

<platform name="android">
    ...
    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
        <application android:networkSecurityConfig="@xml/network_security_config" />
    </edit-config>
    <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
    ....
</platform>

That’s it! From there I rebuilt the APK and the app was now able to communicate from both the emulator and phone.

More info on network sec: https://developer.android.com/training/articles/security-config.html#CleartextTrafficPermitted

answered May 17, 2019 at 0:43

haggy's user avatar

haggyhaggy

7226 silver badges11 bronze badges

5

working for me after turn off ads block extension in chrome, this error sometime appear because something that block http in browser

enter image description here

answered Aug 29, 2018 at 15:38

Dwiyi's user avatar

DwiyiDwiyi

6097 silver badges16 bronze badges

1

If you are using .NET Core application, this solution might help!

Moreover this might not be an Angular or other request error in your front end application

First, you have to add the Microsoft CORS Nuget package:

Install-Package Microsoft.AspNetCore.Cors

You then need to add the CORS services in your startup.cs. In your ConfigureServices method you should have something similar to the following:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
}

Next, add the CORS middleware to your app. In your startup.cs you should have a Configure method. You need to have it similar to this:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory)
{
    app.UseCors( options => 
    options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
    app.UseMvc();
}

The options lambda is a fluent API so you can add/remove any extra options you need. You can actually use the option “AllowAnyOrigin” to accept any domain, but I highly recommend you do not do this as it opens up cross origin calls from anyone. You can also limit cross origin calls to their HTTP Method (GET/PUT/POST etc), so you can only expose GET calls cross domain etc.

Feasoron's user avatar

Feasoron

3,4221 gold badge23 silver badges34 bronze badges

answered Mar 22, 2019 at 6:40

sathish's user avatar

sathishsathish

2612 silver badges13 bronze badges

0

For me it was caused by a server side JsonSerializerException.

An unhandled exception has occurred while executing the request
Newtonsoft.Json.JsonSerializationException: Self referencing loop
detected with type …

The client said:

POST http://localhost:61495/api/Action net::ERR_INCOMPLETE_CHUNKED_ENCODING
ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}

Making the response type simpler by eliminating the loops solved the problem.

answered Feb 21, 2018 at 9:56

Perrier's user avatar

PerrierPerrier

2,7015 gold badges33 silver badges52 bronze badges

This error was occurring for me in Firefox but not Chrome while developing locally, and it turned out to be caused by Firefox not trusting my local API’s ssl certificate (which is not valid, but I had added it to my local cert store, which let chrome trust it but not ff). Navigating to the API directly and adding an exception in Firefox fixed the issue.

answered Apr 26, 2018 at 13:04

frax's user avatar

fraxfrax

4434 silver badges10 bronze badges

2

A similar error can occur, when you didn’t give a valid client certificate and token that your server understands:

Error:

Http failure response for (unknown url): 0 Unknown Error

Example code:

import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

class MyCls1 {

  constructor(private http: HttpClient) {
  }

  public myFunc(): void {

    let http: HttpClient;

    http.get(
      'https://www.example.com/mypage',
      {
        headers:
          new HttpHeaders(
            {
              'Content-Type': 'application/json',
              'X-Requested-With': 'XMLHttpRequest',
              'MyClientCert': '',        // This is empty
              'MyToken': ''              // This is empty
            }
          )
      }
    ).pipe( map(res => res), catchError(err => throwError(err)) );
  }

}

Note that both MyClientCert & MyToken are empty strings, hence the error.
MyClientCert & MyToken can be any name that your server understands.

answered Dec 5, 2018 at 12:54

Manohar Reddy Poreddy's user avatar

4

If this is a node service, try the steps outlined here

Basically, it’s a Cross-Origin Resource Sharing (CORS) error. More information about such errors here.

Once I updated my node service with the following lines it worked:

let express = require("express");
let app = express();

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");    
    next();
  });

answered Feb 20, 2020 at 14:32

FistOfFury's user avatar

FistOfFuryFistOfFury

6,4877 gold badges45 silver badges57 bronze badges

1

I was getting that exact message whenever my requests took more than 2 minutes to finish. The browser would disconnect from the request, but the request on the backend continued until it was finished. The server (ASP.NET Web API in my case) wouldn’t detect the disconnect.

After an entire day searching, I finally found this answer, explaining that if you use the proxy config, it has a default timeout of 120 seconds (or 2 minutes).

So, you can edit your proxy configuration and set it to whatever you need:

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "timeout": 6000000
  }
}

Now, I was using agentkeepalive to make it work with NTLM authentication, and didn’t know that the agent’s timeout has nothing to do with the proxy’s timeout, so both have to be set. It took me a while to realize that, so here’s an example:

const Agent = require('agentkeepalive');

module.exports = {
    '/api/': {
        target: 'http://localhost:3000',
        secure: false,
        timeout: 6000000,          // <-- this is needed as well
        agent: new Agent({
            maxSockets: 100,
            keepAlive: true,
            maxFreeSockets: 10,
            keepAliveMsecs: 100000,
            timeout: 6000000,      // <-- this is for the agentkeepalive
            freeSocketTimeout: 90000
        }),
        onProxyRes: proxyRes => {
            let key = 'www-authenticate';
            proxyRes.headers[key] = proxyRes.headers[key] &&
                proxyRes.headers[key].split(',');
        }
    }
};

answered Sep 9, 2019 at 21:33

Marcos Dimitrio's user avatar

Marcos DimitrioMarcos Dimitrio

6,3785 gold badges37 silver badges60 bronze badges

I’m using ASP.NET SPA Extensions which creates me a proxy on ports 5000 and 5001 that pass through to Angular’s port 4200 during development.

I had had CORS correctly setup for https port 5001 and everything was fine, but I inadvertently went to an old bookmark which was for port 5000. Then suddenly this message arose. As others have said in the console there was a ‘preflight’ error message.

So regardless of your environment, if you’re using CORS make sure you have all ports specified — as the host and port both matter.

answered Dec 6, 2018 at 22:05

Simon_Weaver's user avatar

Simon_WeaverSimon_Weaver

136k78 gold badges631 silver badges675 bronze badges

For me it was a browser issue, since my requests were working fine in Postman.

Turns out that for some reason, Firefox and Chrome blocked requests going to port 6000, once I changed the ASP.NET API port to 4000, the error changed to a known CORS error which I could fix.

Chrome at least showed me ERR_UNSAFE_PORT which gave me a clue about what could be wrong.

answered Mar 1, 2020 at 19:23

Shahin Dohan's user avatar

Shahin DohanShahin Dohan

5,7313 gold badges38 silver badges56 bronze badges

If you are using Laravel as your Backend, then edit your .htaccess file by just pasting this code, to solve problem CROS in your Angular or IONIC project

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

answered Feb 2, 2018 at 13:31

shirjeel khan's user avatar

3

If you have a proper cors header in place. Your corporate network may be stripping off the cors header. If the website is externally accessible, try accessing it from outside your network to verify whether the network is causing the problem—a good idea regardless of the cause.

answered Nov 6, 2018 at 19:50

N-ate's user avatar

N-ateN-ate

5,5662 gold badges39 silver badges46 bronze badges

Add This Codes in your connection file

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT,GET,POST,DELETE");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

answered Jan 2, 2020 at 17:49

Abdelhakim Ezzahraoui's user avatar

0

if you are using nodejs as backend, here are steps to follow

  1. install cors in your backend app

    npm install cors

  2. Add this code

     const cors = require('cors');
     const express = require('express');
     const expressApp = express();
     expressApp.use(cors({
         origin: ['http://localhost:4200'],
         "methods": "GET,PUT,POST",
         "preflightContinue": false,
         "optionsSuccessStatus": 204,
         credentials: true
     }));
    

answered Feb 14, 2021 at 17:59

YouBee's user avatar

YouBeeYouBee

1,91114 silver badges16 bronze badges

Is not as old as other questions, but I just struggled with this in an Ionic-Laravel app, and nothing works from here (and other posts), so I installed https://github.com/barryvdh/laravel-cors complement in Laravel and started and it works pretty well.

answered Aug 17, 2018 at 11:06

Gerson Montenegro's user avatar

Mine was caused by an invalid relationship in the models I was trying to query. Figured out by debugging the response it crashed at the relation.

answered Sep 1, 2018 at 14:03

J.Kirk.'s user avatar

J.Kirk.J.Kirk.

9232 gold badges12 silver badges30 bronze badges

For me it wasn’t an angular problem. Was a field of type DateTime in the DB that has a value of (0000-00-00) and my model cannot bind that property correct so I changed to a valid value like (2019-08-12).

I’m using .net core, OData v4 and MySql (EF pomelo connector)

answered Nov 14, 2019 at 11:16

Luis Lopez's user avatar

Luis LopezLuis Lopez

5311 gold badge13 silver badges28 bronze badges

In asp.net core, If your api controller doesn’t have annotation called [AllowAnonymous], add it to above your controller name like

[ApiController]
    [Route("api/")]
    [AllowAnonymous]
    public class TestController : ControllerBase

answered Apr 15, 2020 at 11:55

dgncn's user avatar

dgncndgncn

495 bronze badges

1

You must use —port when serve server
ng serve —open —port 4200

    export class DatabaseService {
  baseUrl: String = "http://localhost:8080/";
  constructor(private http: HttpClient) { }


  saveTutorial(response) {
    var fullUrl = this.baseUrl + "api/tutorials";
   
    return this.http.post(fullUrl,response);
  }
}

answered Nov 12, 2020 at 4:55

Wai Yan Moung's user avatar

I had the same issue. I used grdl’s answer above and added a cors configuration to my server like the one below and the problem was solved.

{
"cors": [
    {
      "origin": [“*”],
      "method": ["GET"],
      "responseHeader": ["Content-Type"],
      "maxAgeSeconds": 3600
    }
  ]
}

Look at the specific cors config help for your server to see how to set it up.

answered Apr 28, 2022 at 7:40

Krithika's user avatar

KrithikaKrithika

1151 silver badge10 bronze badges

2022-07-13

This is the easiest way but DON’T with PROD.

Inside index.html, add or edit the existing <meta http-equiv="Content-Security-Policy" content=". For example CORS blocked my access to local IIS Express https://localhost:44387/api/test, solution is have this

<meta http-equiv="Content-Security-Policy" content="
...
connect-src 'self' https://localhost:44387 https://anysite.com ...">

answered Jul 13, 2022 at 18:25

Jeb50's user avatar

Jeb50Jeb50

5,8706 gold badges41 silver badges71 bronze badges

Let do some simple ones:

a) Network is disconnected — zero byte response.

b) I get this when I cancel a http call (yes you can do that)

c) During start up when I move pages too quickly it will cancel http calls because angular has not hooked up properly. I locked page to stop this one occurring.

d) We had a proxy in the middle and it terminated the connection after 30 seconds rather sending a HTTP timeout packet. If you look at the .net logs on back end you will see a client disconnected message. (these are not unusual as a user may just close their browser)

All of these have happened to me and I have no idea how to separate out which cause it is for any specific failure.

answered Aug 19, 2022 at 2:13

KenF's user avatar

KenFKenF

5244 silver badges13 bronze badges

answered Dec 7, 2022 at 7:34

Snaketec's user avatar

SnaketecSnaketec

2141 silver badge12 bronze badges

My error was that the file was too large (dotnet core seems to have a limit @~25Mb). Setting

  • maxAllowedContentLength to 4294967295 (max value of uint) in web.config
  • decorating the controller action with [DisableRequestSizeLimit]
  • services.Configure(options => { options.MultipartBodyLengthLimit = 4294967295; }); in Startup.cs

solved the problem for me.

answered May 23, 2019 at 14:35

Spikolynn's user avatar

SpikolynnSpikolynn

3,9832 gold badges37 silver badges44 bronze badges

@ygr15893000

user.ts:46 ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …} error : ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …} headers : HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)} message : "Http failure response for (unknown url): 0 Unknown Error" name : "HttpErrorResponse" ok : false status : 0 statusText : "Unknown Error" url : null __proto__ : HttpResponseBase

@ygr15893000

polyfills.js:3 OPTIONS https://example.com/api/v1/login net::ERR_CONNECTION_REFUSED
s @ polyfills.js:3
t.scheduleTask @ polyfills.js:3
onScheduleTask @ polyfills.js:3
t.scheduleTask @ polyfills.js:3
r.scheduleTask @ polyfills.js:3
r.scheduleMacroTask @ polyfills.js:3
(anonymous) @ polyfills.js:3
o.(anonymous function) @ polyfills.js:2
(anonymous) @ http.js:2347
Observable._trySubscribe @ Observable.js:172
Observable.subscribe @ Observable.js:160
subscribeToResult @ subscribeToResult.js:23
MergeMapSubscriber._innerSub @ mergeMap.js:132
MergeMapSubscriber._tryNext @ mergeMap.js:129
MergeMapSubscriber._next @ mergeMap.js:112
Subscriber.next @ Subscriber.js:89
ScalarObservable.subscribe @ ScalarObservable.js:49
Observable.trySubscribe @ Observable.js:172
Observable.subscribe @ Observable.js:160
MergeMapOperator.call @ mergeMap.js:87
Observable.subscribe @ Observable.js:157
FilterOperator.call @ filter.js:60
Observable.subscribe @ Observable.js:157
MapOperator.call @ map.js:56
Observable.subscribe @ Observable.js:157
ConnectableObservable.connect @ ConnectableObservable.js:40
RefCountOperator.call @ refCount.js:24
Observable.subscribe @ Observable.js:157
webpackJsonp.310.User.login @ user.ts:39
webpackJsonp.348.LoginPage.doLogin @ login.ts:37
(anonymous) @ LoginPage.html:11
handleEvent @ core.js:13255
callWithDebugContext @ core.js:14740
debugHandleEvent @ core.js:14327
dispatchEvent @ core.js:9704
(anonymous) @ core.js:10318
(anonymous) @ platform-browser.js:2614
t.invokeTask @ polyfills.js:3
onInvokeTask @ core.js:4620
t.invokeTask @ polyfills.js:3
r.runTask @ polyfills.js:3
e.invokeTask @ polyfills.js:3
p @ polyfills.js:2
v @ polyfills.js:2
**user.ts:46 ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: «Unknown Error», url: null, ok: false, …}error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: «error», …}headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}message: «Http failure response for (unknown url): 0 Unknown Error»name: «HttpErrorResponse»ok: falsestatus: 0statusText: «Unknown Error»url: null__proto
: HttpResponseBase**
(anonymous) @ user.ts:46
SafeSubscriber.__tryOrUnsub @ Subscriber.js:238
SafeSubscriber.error @ Subscriber.js:197
Subscriber._error @ Subscriber.js:128
Subscriber.error @ Subscriber.js:102
Subscriber._error @ Subscriber.js:128
Subscriber.error @ Subscriber.js:102
Subject.error @ Subject.js:70
Subscriber._error @ Subscriber.js:128
ConnectableSubscriber._error @ ConnectableObservable.js:77
Subscriber.error @ Subscriber.js:102
Subscriber._error @ Subscriber.js:128
Subscriber.error @ Subscriber.js:102
Subscriber._error @ Subscriber.js:128
Subscriber.error @ Subscriber.js:102
OuterSubscriber.notifyError @ OuterSubscriber.js:22
InnerSubscriber._error @ InnerSubscriber.js:26
Subscriber.error @ Subscriber.js:102
onError @ http.js:2283
t.invokeTask @ polyfills.js:3
onInvokeTask @ core.js:4620
t.invokeTask @ polyfills.js:3
r.runTask @ polyfills.js:3
e.invokeTask @ polyfills.js:3
p @ polyfills.js:2
v @ polyfills.js:2
XMLHttpRequest.send (async)
s @ polyfills.js:3
t.scheduleTask @ polyfills.js:3
onScheduleTask @ polyfills.js:3
t.scheduleTask @ polyfills.js:3
r.scheduleTask @ polyfills.js:3
r.scheduleMacroTask @ polyfills.js:3
(anonymous) @ polyfills.js:3
o.(anonymous function) @ polyfills.js:2
(anonymous) @ http.js:2347
Observable._trySubscribe @ Observable.js:172
Observable.subscribe @ Observable.js:160
subscribeToResult @ subscribeToResult.js:23
MergeMapSubscriber._innerSub @ mergeMap.js:132
MergeMapSubscriber._tryNext @ mergeMap.js:129
MergeMapSubscriber._next @ mergeMap.js:112
Subscriber.next @ Subscriber.js:89
ScalarObservable._subscribe @ ScalarObservable.js:49
Observable._trySubscribe @ Observable.js:172
Observable.subscribe @ Observable.js:160
MergeMapOperator.call @ mergeMap.js:87
Observable.subscribe @ Observable.js:157
FilterOperator.call @ filter.js:60
Observable.subscribe @ Observable.js:157
MapOperator.call @ map.js:56
Observable.subscribe @ Observable.js:157
ConnectableObservable.connect @ ConnectableObservable.js:40
RefCountOperator.call @ refCount.js:24
Observable.subscribe @ Observable.js:157
webpackJsonp.310.User.login @ user.ts:39
webpackJsonp.348.LoginPage.doLogin @ login.ts:37
(anonymous) @ LoginPage.html:11
handleEvent @ core.js:13255
callWithDebugContext @ core.js:14740
debugHandleEvent @ core.js:14327
dispatchEvent @ core.js:9704
(anonymous) @ core.js:10318
(anonymous) @ platform-browser.js:2614
t.invokeTask @ polyfills.js:3
onInvokeTask @ core.js:4620
t.invokeTask @ polyfills.js:3
r.runTask @ polyfills.js:3
e.invokeTask @ polyfills.js:3
p @ polyfills.js:2
v @ polyfills.js:2
polyfills.js:3 XHR failed loading: OPTIONS «https://example.com/api/v1/login».

@ericmartinezr

Hello, we reviewed this issue and determined that it doesn’t fall into the bug report or feature request category. This issue tracker is not suitable for support requests, please repost your issue on StackOverflow using tag angular.

If you are wondering why we don’t resolve support issues via the issue tracker, please check out this explanation.

@alxhub

Status code 0 indicates a CORS failure.

ygr15893000, pchretien, haifzhan, royadams72, PedroRuiz, topalavlad, oledb, anakreon, glemiere, nivu, and 11 more reacted with thumbs up emoji
ygr15893000, ganqqwerty, mcsky, glemiere, nivu, VeeRHunter, and TheHanna reacted with laugh emoji
ygr15893000, tbinte, glemiere, nivu, VeeRHunter, nvahalik, Tfarra, and TheHanna reacted with hooray emoji
nivu, VeeRHunter, mazinnen, Tfarra, and TheHanna reacted with heart emoji

@sgiradoa-psl

@alxhub We have a very long process on backend that makes the API unavailable until it finishes. During this process the OPTIONS response returns an status code503 and we have an interceptor that redirects the app to a «In maintenance» page. It worked on Angular 1 $http, now the status is 0 with the same issue: Http failure response for (unknown url): 0 Unknown Error and I am not able to know if the status is 503.
Not sure if I should use this status===0likeOPTIONS was 503.

@trotyl

OPTIONS response is not exposed in both XHR and Fetch, no client-side logic can help with that.

@ChristianLutz

@manish-jain-1

I was getting this error even when CORS was enabled. I have posted my solution to above SO link.

@NomanBashir133

Error with
status: 0
statusText: «Unknown Error»
url: null

also occurs when browser doesn’t have internet connection.

No CORS error object should be differentiable from error of No Internet connection.

@angular-automatic-lock-bot

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.



Я использую Angular 4 HttpClient для отправки запросов на внешний сервис. Это очень стандартная настройка:

this.httpClient.get(url).subscribe(response => {
//do something with response
}, err => {
console.log(err.message);
}, () => {
console.log('completed');
}

Проблема в том, что когда запрос не выполняется, я вижу общий
Http failure response for (unknown url): 0 Unknown Error сообщение в консоли. Между тем, когда я проверяю неудачный запрос в chrome, я вижу, что состояние ответа-422, а во вкладке «предварительный просмотр» я вижу фактическое сообщение, описывающее причину сбоя.

Как получить доступ к фактическому ответному сообщению, которое я вижу в инструментах chrome dev?

Вот скриншот демонстрация проблемы:
Введите описание изображения здесь


1271  


7  

7 ответов:

Проблема была связана сCORS . Я заметил, что в консоли Chrome появилась еще одна ошибка:

На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Происхождение ‘http://localhost:4200 ‘ поэтому доступ запрещен. Ответ имел код состояния HTTP 422.’

Это означает, что в ответе от серверной части отсутствовал заголовок Access-Control-Allow-Origin, хотя серверная часть nginx была настроена для добавления этих заголовков к ответам с помощью add_header директива .

Однако эта директива добавляет заголовки только в том случае, если код ответа равен 20X или 30X. Мне нужно было использовать параметр always, чтобы убедиться, что заголовок добавляется независимо от кода ответа:

add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;

Как только серверная часть была правильно настроена, я мог получить доступ к фактическому сообщению об ошибке в коде Angular.

Если вы используете Laravel в качестве бэкенда, то отредактируйте его .htaccess файл, просто вставив этот код, чтобы решить проблему CROS в вашем Angular или IONIC проекте

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

Для меня это было вызвано JsonSerializerException на стороне сервера.

При выполнении запроса произошло необработанное исключение
Newtonsoft.формат JSON.JsonSerializationException: содержит ссылки на себя петлю
обнаружен с типом …

Клиент сказал:

POST http://localhost:61495/api/Action net::ERR_INCOMPLETE_CHUNKED_ENCODING
ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}

Упрощение типа ответа устранение петель решило проблему.

Эта ошибка возникла у меня в Firefox, но не в Chrome при разработке локально, и она оказалась вызвана тем, что Firefox не доверяет моему локальному API-сертификату ssl (который не является действительным, но я добавил его в свой локальный CERT store, что позволило chrome доверять ему, но не ff). Переход к API напрямую и добавление исключения в Firefox исправили проблему.

Работая на меня после отключения расширения Ads block В chrome, эта ошибка иногда появляется из-за того, что что-то блокирует http в браузере

Введите описание изображения здесь

Не так стар, как другие вопросы, но я просто боролся с этим в приложении Ionic-Laravel, и здесь ничего не работает (и другие сообщения), поэтому я установил https://github.com/barryvdh/laravel-cors дополнение в Laravel и началось, и оно работает довольно хорошо.

Мое было вызвано недопустимым отношением в моделях, которые я пытался запросить. Выяснено путем отладки ответа он разбился на отношение.

Я хочу использовать APP_INITIALIZER для загрузки информации об авторизации при старте приложения. Я добавил APP_INITIALIZER в AppModule:

 providers: [
        {
            provide: APP_INITIALIZER,
            useFactory: init,
            deps: [AuthService],
            multi: true
        }
    ]

Моя init функция:

export function init(authService: AuthService) {
    return () => {
        return authService.loadSecurityInfo(true).toPromise();
    };
}

Метод loadSecurityInfo выглядит так:

loadSecurityInfo(reconstituteSecurity = false): Observable<SecurityInfo> {
    console.log(`Loading SecurityInfo - Reconstitute security? ${reconstituteSecurity}`);

    return this.http
        .get<any>(this.securityInfoUrl, {headers: this.headers})
        .pipe(
            map(body => {
                this._securityInfo = new SecurityInfo();
                this._securityInfo.isAuthenticationEnabled = body.authenticationEnabled;
                this._securityInfo.isAuthenticated = body.authenticated;
                this._securityInfo.username = body.username;
                this._securityInfo.roles = body.roles as string[];

                console.log(`Getting security info: ${JSON.stringify(this.securityInfo)}`);
                return this._securityInfo;
            }),
            catchError(this.errorReporter.handleError('loadSecurityInfo', null))
        );
}

Когда я запускаю приложение и пытаюсь обновить страницу, нажав F5 быстро, например, два раза, я получаю ошибку в консоли браузера:

Http failure response for (unknown url): 0 Unknown Error
loadSecurityInfo failed: Backend returned code 0, status: undefined, error list: undefined
zUnb/Y</e.prototype.handleError/<
http://localhost:8080/main.ba74b710245ba9a3c361.js:1:1433305
9Z1F/u</t.prototype.error
m
http://localhost:8080/polyfills.855d06b353079dbdbf17.js:1:20756
b

Если я нажимаю F5 медленно, когда предыдущее обновление страницы отработало, ошибки нет! Я сломал себе мозг, почему происходит эта ошибка? Ошибка происходит только в браузере Firefox 60.4.0esr возможно и ниже, на последних версий браузеров Firefox и хром-нет ошибок.

Я использую Angular 6.1.10

UPDATE:

handleError:

handleError<T>(operation = 'operation', result?: T) {
        return (error: any): Observable<T> => {

            // TODO: send the error to remote logging infrastructure
            console.error(error); // log to console instead

            const message = traslateErrorToMessage(error);
            console.error(`${operation} failed: ${message}`);

            // go to error page
            window.location.href = 'assets/pages/error.html';

            // Let the app keep running by returning an empty result.
            return of(result as T);
        };
    }

function traslateErrorToMessage(error: any) {
    let message;
    if (error.error instanceof ErrorEvent) {
        message = `A client-side or network error: ${error.error.message}`;
    } else {
        message = `Backend returned code ${error.status}, status: ${error.error.status}, `
            + `error list: ${error.error.errors}`;
    }
    return message;
}

Вызовы сети:

введите сюда описание изображения

securityInfoUrl здесь вообще даже не вызвался!

Ошибка в консоле:

введите сюда описание изображения
Заголовки:

введите сюда описание изображения

UPDATE:
Я убрал обращение к API при старте приложения, но ошибка осталась и возникает уже на другом обращение при тех же самых действия (несколько раз нажать F5), т.е. получается проблема не APP_INITIALIZER:

введите сюда описание изображения

Я использую Angular 4 HttpClient для отправки запросов на внешнюю службу. Это очень стандартная настройка:

this.httpClient.get(url).subscribe(response => {
  //do something with response
}, err => {
  console.log(err.message);
}, () => {
  console.log('completed');
}

Проблема в том, что когда запрос не работает, я вижу общий Http failure response for (unknown url): 0 Unknown Error сообщение об Http failure response for (unknown url): 0 Unknown Error в консоли. Между тем, когда я проверяю неудавшийся запрос в chrome, я вижу, что статус ответа — 422, а на вкладке «Предварительный просмотр» я вижу фактическое сообщение о причине возникновения ошибки.

Как получить доступ к фактическому ответному сообщению, которое я вижу в инструментах хром-dev?

Вот скриншот, демонстрирующий проблему: Изображение 234

08 нояб. 2017, в 12:47

Поделиться

Источник

11 ответов

Проблема была связана с CORS. Я заметил, что в консоли Chrome появилась еще одна ошибка:

В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение ‘ http://localhost: 4200 ‘, следовательно, не допускается. В ответе был код статуса 422.

Это означает, что ответ с сервера backend отсутствовал в заголовке Access-Control-Allow-Origin хотя backend nginx был настроен для добавления этих заголовков в ответы с директивой add_header.

Однако эта директива добавляет только заголовки, когда код ответа 20X или 30X. При ответах об ошибках заголовки отсутствовали. Мне нужно было always использовать параметр, чтобы убедиться, что заголовок добавлен независимо от кода ответа:

add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;

Когда бэкэнд был правильно настроен, я смог получить доступ к фактическому сообщению об ошибке в Угловом коде.

grdl
14 нояб. 2017, в 22:52

Поделиться

работая для меня после отключения расширения блока объявлений в chrome, эта ошибка появляется иногда из-за того, что блокирует http в браузере

Изображение 3509

Dwi Yanuar Ilham
29 авг. 2018, в 15:45

Поделиться

Для меня это было вызвано сбоем на стороне сервера JsonSerializerException.

Необработанное исключение произошло во время выполнения запроса Newtonsoft.Json.JsonSerializationException: цикл саморекламы, обнаруженный с помощью типа…

Клиент сказал:

POST http://localhost:61495/api/Action net::ERR_INCOMPLETE_CHUNKED_ENCODING
ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}

Создание типа ответа, упрощающего цикл, решило проблему.

Perrier
21 фев. 2018, в 10:34

Поделиться

Подобная ошибка может произойти, если вы не предоставили действительный сертификат клиента и токен, который понимает ваш сервер:

Ошибка:

Ответ об ошибке Http для (неизвестный url): 0 Неизвестная ошибка

Пример кода:

import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

class MyCls1 {

  constructor(private http: HttpClient) {
  }

  public myFunc(): void {

    let http: HttpClient;

    http.get(
      'https://www.example.com/mypage',
      {
        headers:
          new HttpHeaders(
            {
              'Content-Type': 'application/json',
              'X-Requested-With': 'XMLHttpRequest',
              'MyClientCert': '',        // This is empty
              'MyToken': ''              // This is empty
            }
          )
      }
    ).pipe( map(res => res), catchError(err => throwError(err)) );
  }

}

Обратите внимание, что и MyClientCert & MyToken — это пустые строки, поэтому ошибка.
MyClientCert & MyToken может быть любым именем, которое понимает ваш сервер.

Manohar Reddy Poreddy
05 дек. 2018, в 14:22

Поделиться

Эта ошибка произошла для меня в Firefox, но не в Chrome при разработке локально, и это оказалось вызвано тем, что Firefox не доверял моему локальному сертификату API ssl (что неверно, но я добавил его в свой локальный магазин cert, который позволяет хром доверять ему, но не ff). Исправлена проблема с прямым доступом к API и добавлением исключения в Firefox.

frax
26 апр. 2018, в 14:54

Поделиться

Если вы используете Laravel в качестве Backend, а затем отредактируйте файл.htaccess, просто вставив этот код, чтобы решить проблему CROS в вашем проекте Angular или IONIC

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

shirjeel khan
02 фев. 2018, в 13:54

Поделиться

Я использую ASP.NET SPA Extensions, который создает мне прокси на портах 5000 и 5001, которые проходят через Angular port 4200 во время разработки.

У меня была правильная настройка CORS для порта https 5001, и все было хорошо, но я случайно попал в старую закладку, которая была для порта 5000. Затем неожиданно это сообщение возникло. Как говорили другие в консоли, было сообщение об ошибке «предполетное».

Поэтому, независимо от вашей среды, если вы используете CORS, убедитесь, что у вас есть все порты, указанные в качестве хоста и порта.

Simon_Weaver
06 дек. 2018, в 22:51

Поделиться

Если вы используете Laravel в качестве Backend, а затем отредактируйте файл Controller в проекте laravel, просто вставив этот код в функцию конструктора, чтобы решить проблему CROS в вашем проекте Angular или IONIC

public function __construct(){
    header('Access-Control-Allow-Origin: *'); //just add this line
}

Anjani Barnwal
26 нояб. 2018, в 07:40

Поделиться

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

N-ate
06 нояб. 2018, в 20:59

Поделиться

Мой был вызван недействительными отношениями в моделях, которые я пытался запросить. Выяснилось, отлаживая ответ, который он разбил на отношение.

J.Kirk.
01 сен. 2018, в 15:38

Поделиться

Я не так стара, как другие вопросы, но я просто боролся с этим в приложении Ionic-Laravel, и отсюда ничего не работает (и других сообщений), поэтому я установил https://github.com/barryvdh/laravel-cors дополнение в Laravel и начал, и он работает очень хорошо.

gersonmontenegro
17 авг. 2018, в 12:56

Поделиться

Ещё вопросы

  • 1WifiManager: Android
  • 0Рекурсивный выбор Mysql
  • 0Как обновить div только не все страницы при выборе из выберите тип
  • 0$ scope. $ apply возвращает ошибку
  • 0Миграция данных Doctrine и Mysql при изменении структуры таблицы
  • 1Выберите Запрос не находит существующую запись
  • 1Изменить значение атрибута следующего брата
  • 1Как применить метод получения / установки к объекту
  • 0как сохранить свернутое состояние панели при обновлении страницы
  • 0как преобразовать результат XML в массив
  • 1Хеш-код BigInteger для встраиваемого составного ключа
  • 0Какой подход сохранения свойства модели лучше?
  • 0Это нормально для него = map.find (element) == map.end () имеет это-> второй?
  • 1Получить размер базы данных Rethinkdb с помощью Python
  • 1У меня есть два списка, но один метод itemclick
  • 0Расширить TD до максимальной доступной ширины
  • 0MySQL Query не может найти столбец [дубликата]
  • 1Обновление библиотек Struts 2.3.16.2 вызвало ошибку
  • 1Лучшая практика для совместного использования модулей и классов, хранящихся в более высоких каталогах в Python
  • 0обновить извлеченное значение формы из mysql
  • 1Публиковать данные при открытии браузера в Python
  • 0ненавязчивая обратная связь при загрузке страницы (onload)
  • 0HTML, экранирующий в форме
  • 0Открытие файла для чтения в C ++, проблема со строкой имени файла
  • 1Web Audio API — USB-концентратор
  • 1Как получить доступ к объекту .net C #, который поступил в функцию делегата?
  • 1Openshift this.getClass (). GetResource () путь, вероятно, не правильный
  • 0Шаблон проектирования для поиска данных в объектах JSON
  • 1развертывание, установка на каждом компьютере или запуск из сети
  • 0Ошибка инициализации
  • 0jQuery не возвращает ссылку на простой элемент canvas
  • 0Многопоточное приложение CPU CUDA не асинхронно при вызове CudaFree
  • 0Mysql для хранения текста?
  • 0переменная объема не отражена в директиве
  • 0Функция фильтра jQuery regexp
  • 1Java и Hadoop: несовместимые типы с TextInputFormat
  • 1Как обернуть Hibernate сессионный API, чтобы избежать «непроверенных» предупреждений об обобщениях
  • 1Прототип объекта toString Call — JavaScript
  • 0Как получить органические просмотры страниц и просмотр органических страниц для определенного URL-адреса с помощью google-analytics-api?
  • 0Найти сообщение с несколькими тегами [дубликаты]
  • 0Как отсортировать вектор <pair <int, pair <int, pair <string, pair <int, int>>>>>?
  • 0Отправка данных строки запроса с помощью правила перезаписи apache
  • 1Связывание данных JSON с данными элементами в d3
  • 1Matplotlib: Как рисовать линии краев в Arc — патчи
  • 0Как я могу изменить этот код, чтобы он работал с IE 11?
  • 0Какие расширения FFI?
  • 1Невозможно установить ItemsSource для XamComboEditor в XamDataGrid
  • 0Параметр в функции контроллера возвращает неопределенный ReferenceError
  • 0Объединяйте таблицы MySQL, выбирайте строки со столбцами, начинающимися со строки, и используйте умножение для фильтрации
  • 1Использование клиентских веб-сервисов сгенерированных JAXB классов в качестве объектов JPA

Сообщество Overcoder

I have an issue with CORS on my Angular 6/Symfony 4 project.
This project have login/register module. I’m using FOSUserBundle and set enabled to false by default. Then, I send an email with a confirmation link (https://subdomain.example.com/confirm-email/CONFIRMATION_TOKEN) to verify that it’s not a bot.
The link redirects to a special page in Angular who PUT the user account to enable it.
The thing is, everything works fine on laptop with any browser but when I want to do it with my phone, nothing append. I’ve tried to alert the error message and I got this :

{"headers":{"normalizedNames":{}, "lazyUpdate":null,"headers": {}},"status":0,"statusText":"UnknownError","url":null,"ok":false,"name":"HttpErrorResponse","message":"Http failure response for (unknown url): 0 Unknown Error","error":{"isTrusted":true}}

So, I’ve got some researches and I found out that it is a CORS problem, some topics said it’s Angular, some others said that the server has a wrong configuration. I’ve read lots of articles on CORS and I actually didn’t any progress to resolve this issue.

Here are some samples :

Symfony, .env

CORS_ALLOW_ORIGIN=^https://subdomain.example.com$

Symfony, nelmio_cors.yaml

nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        max_age: 3600
    paths:
        '^/': ~

Angular, login.service.ts

async confirmUser(confirmToken: string): Promise<any> {
    const httpOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'application/json; charset=UTF-8'
        })
    };

    return await this.http.post(`${this.url}/user/${confirmToken}`, httpOptions).toPromise();
}

Angular, confirm-user.component.ts

async confirmUser() {
    try {
      await this.loginService.confirmUser(this.confirmToken);
      setTimeout(() => {
        window.location.href = 'https://example.com/';
      }, 1000);
    } catch (error) {
      swal({
        type: 'error',
        title: 'Oops...',
        text: error.statusText,
        showConfirmButton: false,
        showCancelButton: false,
        timer: 2000
      });
    }
}

I really don’t know what is the problem and why it’s not working on mobile device while it’s works perfectly with a laptop. I’m using Browserstack to test on multiple devices (iOS, Android). Same with my mobile (iOS12) with Safari and Chrome.

FYI, those two project are on the same server but with two different url.
Ex : subdomain.example.com and subdomain-api.example.com

If someone has ever encountered this and has a solution, please be my guest.

EDIT 1

Thanks to sideshowbarker for removing my cors tag, while checking your profile I saw one of your answers and tried «How to use a CORS proxy to get around “No Access-Control-Allow-Origin header” problems» method. And it works for the OPTIONS request but not for the POST (image: https://imgur.com/0WkeYlQ). And for this I have maybe a solution : My CTO blocked by IP the access to the API. We only allow example.com, subdomain.example.com and IP’s from our company. So, I guess we should allow https://cors-anywhere.herokuapp.com/ IP but is there another alternative ?

I have an issue with CORS on my Angular 6/Symfony 4 project.
This project have login/register module. I’m using FOSUserBundle and set enabled to false by default. Then, I send an email with a confirmation link (https://subdomain.example.com/confirm-email/CONFIRMATION_TOKEN) to verify that it’s not a bot.
The link redirects to a special page in Angular who PUT the user account to enable it.
The thing is, everything works fine on laptop with any browser but when I want to do it with my phone, nothing append. I’ve tried to alert the error message and I got this :

{"headers":{"normalizedNames":{}, "lazyUpdate":null,"headers": {}},"status":0,"statusText":"UnknownError","url":null,"ok":false,"name":"HttpErrorResponse","message":"Http failure response for (unknown url): 0 Unknown Error","error":{"isTrusted":true}}

So, I’ve got some researches and I found out that it is a CORS problem, some topics said it’s Angular, some others said that the server has a wrong configuration. I’ve read lots of articles on CORS and I actually didn’t any progress to resolve this issue.

Here are some samples :

Symfony, .env

CORS_ALLOW_ORIGIN=^https://subdomain.example.com$

Symfony, nelmio_cors.yaml

nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        max_age: 3600
    paths:
        '^/': ~

Angular, login.service.ts

async confirmUser(confirmToken: string): Promise<any> {
    const httpOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'application/json; charset=UTF-8'
        })
    };

    return await this.http.post(`${this.url}/user/${confirmToken}`, httpOptions).toPromise();
}

Angular, confirm-user.component.ts

async confirmUser() {
    try {
      await this.loginService.confirmUser(this.confirmToken);
      setTimeout(() => {
        window.location.href = 'https://example.com/';
      }, 1000);
    } catch (error) {
      swal({
        type: 'error',
        title: 'Oops...',
        text: error.statusText,
        showConfirmButton: false,
        showCancelButton: false,
        timer: 2000
      });
    }
}

I really don’t know what is the problem and why it’s not working on mobile device while it’s works perfectly with a laptop. I’m using Browserstack to test on multiple devices (iOS, Android). Same with my mobile (iOS12) with Safari and Chrome.

FYI, those two project are on the same server but with two different url.
Ex : subdomain.example.com and subdomain-api.example.com

If someone has ever encountered this and has a solution, please be my guest.

EDIT 1

Thanks to sideshowbarker for removing my cors tag, while checking your profile I saw one of your answers and tried «How to use a CORS proxy to get around “No Access-Control-Allow-Origin header” problems» method. And it works for the OPTIONS request but not for the POST (image: https://imgur.com/0WkeYlQ). And for this I have maybe a solution : My CTO blocked by IP the access to the API. We only allow example.com, subdomain.example.com and IP’s from our company. So, I guess we should allow https://cors-anywhere.herokuapp.com/ IP but is there another alternative ?


Я использую Angular 4 HttpClientдля отправки запросов во внешнюю службу. Это очень стандартная установка:

this.httpClient.get(url).subscribe(response => {
  //do something with response
}, err => {
  console.log(err.message);
}, () => {
  console.log('completed');
}

Проблема в том, что когда запрос не выполняется, я вижу Http failure response for (unknown url): 0 Unknown Errorв консоли общее
сообщение. Между тем, когда я проверяю неудавшийся запрос в chrome, я вижу статус ответа 422, а на вкладке «предварительный просмотр» я вижу фактическую причину сбоя в сообщении.

Как мне получить доступ к фактическому ответному сообщению, которое я вижу в инструментах Chrome dev?

Вот скриншот, демонстрирующий проблему:
введите описание изображения здесь






Ответы:


Проблема была связана с CORS . Я заметил, что в консоли Chrome произошла еще одна ошибка:

На запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Происхождение « HTTP: // локальный: 4200 », следовательно , не имеет права доступа. Ответ имел код состояния HTTP 422.

Это означает, что в ответе внутреннего сервера отсутствовал Access-Control-Allow-Originзаголовок, хотя серверный nginx был настроен на добавление этих заголовков в ответы с помощью add_headerдирективы .

Однако эта директива добавляет заголовки только тогда, когда код ответа равен 20X или 30X. В сообщениях об ошибках отсутствовали заголовки. Мне нужно было использовать alwaysпараметр, чтобы убедиться, что заголовок добавлен независимо от кода ответа:

add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;

Как только бэкэнд был правильно настроен, я мог получить доступ к фактическому сообщению об ошибке в коде Angular.







В случае, если кто-то еще окажется таким же потерянным, как и я … Мои проблемы НЕ были связаны с CORS (я полностью контролирую сервер (ы), и CORS был настроен правильно!).

Моя проблема заключалась в том, что я использую платформу Android уровня 28, которая по умолчанию отключает сетевую связь в открытом виде, и я пытался разработать приложение, которое указывает на IP-адрес моего ноутбука (на котором запущен сервер API). Базовый URL-адрес API выглядит примерно так : http: // [LAPTOP_IP]: 8081 . Поскольку это не https , android webview полностью блокирует xfer сети между телефоном / эмулятором и сервером на моем ноутбуке. Чтобы это исправить:

Добавить конфигурацию сетевой безопасности

Новый файл в проекте: resources / android / xml / network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <!-- Set application-wide security config -->
  <base-config cleartextTrafficPermitted="true"/>
</network-security-config>

ПРИМЕЧАНИЕ. Это следует использовать осторожно, так как это разрешит весь открытый текст из вашего приложения (ничто не заставляет использовать https). Вы можете ограничить его, если хотите.

Ссылка на конфигурацию в основном config.xml

<platform name="android">
    ...
    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
        <application android:networkSecurityConfig="@xml/network_security_config" />
    </edit-config>
    <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
    ....
</platform>

Это оно! Оттуда я восстановил APK, и теперь приложение могло связываться как с эмулятором, так и с телефона.

Дополнительная информация о сетевой сек: https://developer.android.com/training/articles/security-config.html#CleartextTrafficPermitted





работает для меня после отключения расширения блокировки рекламы в Chrome, эта ошибка иногда появляется из-за того, что что-то блокирует http в браузере

введите описание изображения здесь



Если вы используете приложение .NET Core, это решение может помочь!

Более того, это может быть не ошибка Angular или другая ошибка запроса в вашем клиентском приложении.

Во-первых, вам нужно добавить пакет Microsoft CORS Nuget:

Install-Package Microsoft.AspNetCore.Cors

Затем вам нужно добавить службы CORS в файл startup.cs. В вашем методе ConfigureServices должно быть что-то похожее на следующее:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
}

Затем добавьте в свое приложение промежуточное ПО CORS. В вашем startup.cs у вас должен быть метод настройки. Вам нужно, чтобы это было примерно так:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory)
{
    app.UseCors( options => 
    options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
    app.UseMvc();
}

Лямбда параметров — это удобный API, поэтому вы можете добавлять / удалять любые дополнительные параметры, которые вам нужны. Фактически вы можете использовать опцию «AllowAnyOrigin», чтобы принять любой домен, но я настоятельно рекомендую вам не делать этого, поскольку он открывает вызовы из разных источников от кого-либо. Вы также можете ограничить перекрестные вызовы источников их HTTP-методом (GET / PUT / POST и т. Д.), Чтобы вы могли только открывать перекрестные доменные вызовы GET и т. Д.


Эта ошибка возникала у меня в Firefox, но не в Chrome при локальной разработке, и оказалось, что Firefox не доверяет моему локальному сертификату ssl API (который недействителен, но я добавил его в свое локальное хранилище сертификатов, что позволило хром доверять ему но не ff). Непосредственный переход к API и добавление исключения в Firefox устранили проблему.




Для меня это было вызвано исключением JsonSerializerException на стороне сервера.

Произошло необработанное исключение при выполнении запроса Newtonsoft.Json.JsonSerializationException: обнаружен цикл самореференции с типом …

Клиент сказал:

POST http://localhost:61495/api/Action net::ERR_INCOMPLETE_CHUNKED_ENCODING
ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}

Упрощение типа ответа за счет устранения петель решило проблему.


Если вы используете Laravel в качестве Backend, отредактируйте файл .htaccess, просто вставив этот код, чтобы решить проблему CROS в вашем проекте Angular или IONIC.

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"





Аналогичная ошибка может возникнуть, если вы не предоставили действующий сертификат клиента и токен, который понимает ваш сервер:

Ошибка:

Ответ об ошибке HTTP для (неизвестный URL): 0 Неизвестная ошибка

Пример кода:

import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

class MyCls1 {

  constructor(private http: HttpClient) {
  }

  public myFunc(): void {

    let http: HttpClient;

    http.get(
      'https://www.example.com/mypage',
      {
        headers:
          new HttpHeaders(
            {
              'Content-Type': 'application/json',
              'X-Requested-With': 'XMLHttpRequest',
              'MyClientCert': '',        // This is empty
              'MyToken': ''              // This is empty
            }
          )
      }
    ).pipe( map(res => res), catchError(err => throwError(err)) );
  }

}

Обратите внимание, что оба MyClientCert& MyTokenявляются пустыми строками, отсюда и ошибка.
MyClientCert& MyTokenможет быть любым именем, понятным вашему серверу.





Я использую расширения ASP.NET SPA, которые создают мне прокси на портах 5000 и 5001, которые передаются на порт 4200 Angular во время разработки.

Я правильно настроил CORS для https-порта 5001, и все было в порядке, но я случайно перешел на старую закладку, которая была для порта 5000. Затем внезапно возникло это сообщение. Как другие говорили в консоли, появилось сообщение об ошибке «предполетная».

Итак, независимо от вашей среды, если вы используете CORS, убедитесь, что у вас указаны все порты — поскольку хост и порт имеют значение.


Я получал именно это сообщение всякий раз, когда выполнение моих запросов занимало более 2 минут. Браузер отключился от запроса, но запрос на серверной части продолжался, пока не был завершен. Сервер (в моем случае веб-API ASP.NET) не обнаружил разъединение.

После целого дня поиска я наконец нашел этот ответ , объяснив, что если вы используете конфигурацию прокси , у него по умолчанию тайм-аут 120 секунд (или 2 минуты).

Итак, вы можете отредактировать конфигурацию прокси и установить все, что вам нужно:

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "timeout": 6000000
  }
}

Теперь я использовал agentkeepalive, чтобы заставить его работать с аутентификацией NTLM , и не знал, что тайм-аут агента не имеет ничего общего с тайм-аутом прокси, поэтому оба должны быть установлены. Мне потребовалось время, чтобы осознать это, поэтому вот пример:

const Agent = require('agentkeepalive');

module.exports = {
    '/api/': {
        target: 'http://localhost:3000',
        secure: false,
        timeout: 6000000,          // <-- this is needed as well
        agent: new Agent({
            maxSockets: 100,
            keepAlive: true,
            maxFreeSockets: 10,
            keepAliveMsecs: 100000,
            timeout: 6000000,      // <-- this is for the agentkeepalive
            freeSocketTimeout: 90000
        }),
        onProxyRes: proxyRes => {
            let key = 'www-authenticate';
            proxyRes.headers[key] = proxyRes.headers[key] &&
                proxyRes.headers[key].split(',');
        }
    }
};


Для меня это была проблема браузера, так как мои запросы нормально работали в Postman.

Оказывается, по какой-то причине Firefox и Chrome заблокировали запросы, идущие на порт 6000, после того как я изменил порт API ASP.NET на 4000, ошибка изменилась на известную ошибку CORS, которую я мог исправить.

Chrome по крайней мере показал мне, ERR_UNSAFE_PORTчто дало мне понять, что может быть не так.


Если у вас есть правильный заголовок cors. Возможно, в вашей корпоративной сети отсутствует заголовок cors. Если веб-сайт доступен извне, попробуйте получить к нему доступ из-за пределов своей сети, чтобы проверить, не вызывает ли сеть проблема — хорошая идея независимо от причины.


В ядре asp.net, если ваш контроллер api не имеет вызываемой аннотации [AllowAnonymous], добавьте ее над именем вашего контроллера, например

[ApiController]
    [Route("api/")]
    [AllowAnonymous]
    public class TestController : ControllerBase


Не такой старый, как другие вопросы, но я просто боролся с этим в приложении Ionic-Laravel, и здесь ничего не работает (и другие сообщения), поэтому я установил дополнение https://github.com/barryvdh/laravel-cors в Laravel и запустился, и он работает очень хорошо.


Моя была вызвана недопустимыми отношениями в моделях, которые я пытался запросить. Выяснилось путем отладки ответа, что он разбился в отношении.


Для меня это не было проблемой. Было поле типа DateTime в БД, которое имеет значение (0000-00-00), и моя модель не может правильно привязать это свойство, поэтому я изменил на допустимое значение, например (2019-08-12).

Я использую ядро ​​.net, OData v4 и MySql (коннектор EF pomelo)


Добавьте эти коды в файл подключения

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT,GET,POST,DELETE");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");


Если это служба узла, попробуйте шаги, описанные здесь

По сути, это ошибка общего доступа к ресурсам (CORS). Подробнее о таких ошибках здесь .

Как только я обновил службу узлов, добавив следующие строки, все заработало:

let express = require("express");
let app = express();

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");    
    next();
  });


Моя ошибка заключалась в том, что файл был слишком большим (ядро dotnet, похоже, имеет ограничение @ ~ 25 МБ). настройка

  • maxAllowedContentLength до 4294967295 (максимальное значение uint) в web.config
  • украшение действия контроллера [DisableRequestSizeLimit]
  • services.Configure (options => {options.MultipartBodyLengthLimit = 4294967295;}); в Startup.cs

решил проблему для меня.

Icon Ex Номер ошибки: Ошибка 0x800CCC12
Название ошибки: SMTP_UNKNOWN_RESPONSE_CODE
Описание ошибки: Unable to send Winsock request. SMTP_UNKNOWN_RESPONSE_CODE.
Разработчик: Microsoft Corporation
Программное обеспечение: Microsoft Outlook Express
Относится к: Windows XP, Vista, 7, 8, 10, 11

«SMTP_UNKNOWN_RESPONSE_CODE» Введение

Эксперты обычно называют «SMTP_UNKNOWN_RESPONSE_CODE» «ошибкой времени выполнения». Чтобы убедиться, что функциональность и операции работают в пригодном для использования состоянии, разработчики программного обеспечения, такие как Microsoft Corporation, выполняют отладку перед выпусками программного обеспечения. К сожалению, такие проблемы, как ошибка 0x800CCC12, могут быть пропущены, и программное обеспечение будет содержать эти проблемы при выпуске.

Ошибка 0x800CCC12 также отображается как «Unable to send Winsock request. SMTP_UNKNOWN_RESPONSE_CODE.». Это распространенная ошибка, которая может возникнуть после установки программного обеспечения. Сообщение об этой ошибке 0x800CCC12 позволит разработчикам обновить свое приложение и исправить любые ошибки, которые могут вызвать его. Затем Microsoft Corporation исправляет эти дефектные записи кода и сделает обновление доступным для загрузки. Чтобы исправить такие ошибки 0x800CCC12 ошибки, устанавливаемое обновление программного обеспечения будет выпущено от поставщика программного обеспечения.

Когда происходит ошибка 0x800CCC12?

У вас будет сбой во время выполнения Microsoft Outlook Express, если вы столкнетесь с «SMTP_UNKNOWN_RESPONSE_CODE» во время выполнения. Вот три наиболее распространенные причины, по которым происходят ошибки во время выполнения ошибки 0x800CCC12:

Ошибка 0x800CCC12 Crash — Ошибка 0x800CCC12 остановит компьютер от выполнения обычной программной операции. Эти ошибки обычно возникают, когда входы Microsoft Outlook Express не могут быть правильно обработаны, или они смущены тем, что должно быть выведено.

Утечка памяти «SMTP_UNKNOWN_RESPONSE_CODE» — если есть утечка памяти в Microsoft Outlook Express, это может привести к тому, что ОС будет выглядеть вялой. Возможные причины из-за отказа Microsoft Corporation девыделения памяти в программе или когда плохой код выполняет «бесконечный цикл».

Error 0x800CCC12 Logic Error — Ошибка программной логики возникает, когда, несмотря на точный ввод от пользователя, производится неверный вывод. Когда точность исходного кода Microsoft Corporation низкая, он обычно становится источником ошибок.

Повреждение, отсутствие или удаление файлов SMTP_UNKNOWN_RESPONSE_CODE может привести к ошибкам Microsoft Outlook Express. Обычно, установка новой версии файла Microsoft Corporation позволяет устранить проблему, из-за которой возникает ошибка. Мы также рекомендуем выполнить сканирование реестра, чтобы очистить все недействительные ссылки на SMTP_UNKNOWN_RESPONSE_CODE, которые могут являться причиной ошибки.

Типичные ошибки SMTP_UNKNOWN_RESPONSE_CODE

Частичный список ошибок SMTP_UNKNOWN_RESPONSE_CODE Microsoft Outlook Express:

  • «Ошибка SMTP_UNKNOWN_RESPONSE_CODE. «
  • «SMTP_UNKNOWN_RESPONSE_CODE не является приложением Win32.»
  • «Извините, SMTP_UNKNOWN_RESPONSE_CODE столкнулся с проблемой. «
  • «Файл SMTP_UNKNOWN_RESPONSE_CODE не найден.»
  • «Отсутствует файл SMTP_UNKNOWN_RESPONSE_CODE.»
  • «Проблема при запуске приложения: SMTP_UNKNOWN_RESPONSE_CODE. «
  • «Не удается запустить SMTP_UNKNOWN_RESPONSE_CODE. «
  • «SMTP_UNKNOWN_RESPONSE_CODE остановлен. «
  • «Неверный путь к программе: SMTP_UNKNOWN_RESPONSE_CODE. «

Ошибки SMTP_UNKNOWN_RESPONSE_CODE EXE возникают во время установки Microsoft Outlook Express, при запуске приложений, связанных с SMTP_UNKNOWN_RESPONSE_CODE (Microsoft Outlook Express), во время запуска или завершения работы или во время установки ОС Windows. Выделение при возникновении ошибок SMTP_UNKNOWN_RESPONSE_CODE имеет первостепенное значение для поиска причины проблем Microsoft Outlook Express и сообщения о них вMicrosoft Corporation за помощью.

Причины проблем SMTP_UNKNOWN_RESPONSE_CODE

Заражение вредоносными программами, недопустимые записи реестра Microsoft Outlook Express или отсутствующие или поврежденные файлы SMTP_UNKNOWN_RESPONSE_CODE могут создать эти ошибки SMTP_UNKNOWN_RESPONSE_CODE.

В первую очередь, проблемы SMTP_UNKNOWN_RESPONSE_CODE создаются:

  • Поврежденная или недопустимая запись реестра SMTP_UNKNOWN_RESPONSE_CODE.
  • Загрязненный вирусом и поврежденный SMTP_UNKNOWN_RESPONSE_CODE.
  • SMTP_UNKNOWN_RESPONSE_CODE злонамеренно или ошибочно удален другим программным обеспечением (кроме Microsoft Outlook Express).
  • Другое приложение, конфликтующее с SMTP_UNKNOWN_RESPONSE_CODE или другими общими ссылками.
  • Поврежденная загрузка или неполная установка программного обеспечения Microsoft Outlook Express.

Продукт Solvusoft

Загрузка
WinThruster 2023 — Проверьте свой компьютер на наличие ошибок.

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

Я использую Angular 4 HttpClient для отправки запросов на внешнюю службу. Это очень стандартная настройка:

this.httpClient.get(url).subscribe(response => {
  //do something with response
}, err => {
  console.log(err.message);
}, () => {
  console.log('completed');
}

Проблема в том, что когда запрос не работает, я вижу общий Http failure response for (unknown url): 0 Unknown Error сообщение об Http failure response for (unknown url): 0 Unknown Error в консоли. Между тем, когда я проверяю неудавшийся запрос в chrome, я вижу, что статус ответа — 422, а на вкладке «Предварительный просмотр» я вижу фактическое сообщение о причине возникновения ошибки.

Как получить доступ к фактическому ответному сообщению, которое я вижу в инструментах хром-dev?

Вот скриншот, демонстрирующий проблему: Изображение 234

08 нояб. 2017, в 12:47

Поделиться

Источник

11 ответов

Проблема была связана с CORS. Я заметил, что в консоли Chrome появилась еще одна ошибка:

В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение ‘ http://localhost: 4200 ‘, следовательно, не допускается. В ответе был код статуса 422.

Это означает, что ответ с сервера backend отсутствовал в заголовке Access-Control-Allow-Origin хотя backend nginx был настроен для добавления этих заголовков в ответы с директивой add_header.

Однако эта директива добавляет только заголовки, когда код ответа 20X или 30X. При ответах об ошибках заголовки отсутствовали. Мне нужно было always использовать параметр, чтобы убедиться, что заголовок добавлен независимо от кода ответа:

add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;

Когда бэкэнд был правильно настроен, я смог получить доступ к фактическому сообщению об ошибке в Угловом коде.

grdl
14 нояб. 2017, в 22:52

Поделиться

работая для меня после отключения расширения блока объявлений в chrome, эта ошибка появляется иногда из-за того, что блокирует http в браузере

Изображение 3509

Dwi Yanuar Ilham
29 авг. 2018, в 15:45

Поделиться

Для меня это было вызвано сбоем на стороне сервера JsonSerializerException.

Необработанное исключение произошло во время выполнения запроса Newtonsoft.Json.JsonSerializationException: цикл саморекламы, обнаруженный с помощью типа…

Клиент сказал:

POST http://localhost:61495/api/Action net::ERR_INCOMPLETE_CHUNKED_ENCODING
ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}

Создание типа ответа, упрощающего цикл, решило проблему.

Perrier
21 фев. 2018, в 10:34

Поделиться

Подобная ошибка может произойти, если вы не предоставили действительный сертификат клиента и токен, который понимает ваш сервер:

Ошибка:

Ответ об ошибке Http для (неизвестный url): 0 Неизвестная ошибка

Пример кода:

import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

class MyCls1 {

  constructor(private http: HttpClient) {
  }

  public myFunc(): void {

    let http: HttpClient;

    http.get(
      'https://www.example.com/mypage',
      {
        headers:
          new HttpHeaders(
            {
              'Content-Type': 'application/json',
              'X-Requested-With': 'XMLHttpRequest',
              'MyClientCert': '',        // This is empty
              'MyToken': ''              // This is empty
            }
          )
      }
    ).pipe( map(res => res), catchError(err => throwError(err)) );
  }

}

Обратите внимание, что и MyClientCert & MyToken — это пустые строки, поэтому ошибка.
MyClientCert & MyToken может быть любым именем, которое понимает ваш сервер.

Manohar Reddy Poreddy
05 дек. 2018, в 14:22

Поделиться

Эта ошибка произошла для меня в Firefox, но не в Chrome при разработке локально, и это оказалось вызвано тем, что Firefox не доверял моему локальному сертификату API ssl (что неверно, но я добавил его в свой локальный магазин cert, который позволяет хром доверять ему, но не ff). Исправлена проблема с прямым доступом к API и добавлением исключения в Firefox.

frax
26 апр. 2018, в 14:54

Поделиться

Если вы используете Laravel в качестве Backend, а затем отредактируйте файл.htaccess, просто вставив этот код, чтобы решить проблему CROS в вашем проекте Angular или IONIC

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

shirjeel khan
02 фев. 2018, в 13:54

Поделиться

Я использую ASP.NET SPA Extensions, который создает мне прокси на портах 5000 и 5001, которые проходят через Angular port 4200 во время разработки.

У меня была правильная настройка CORS для порта https 5001, и все было хорошо, но я случайно попал в старую закладку, которая была для порта 5000. Затем неожиданно это сообщение возникло. Как говорили другие в консоли, было сообщение об ошибке «предполетное».

Поэтому, независимо от вашей среды, если вы используете CORS, убедитесь, что у вас есть все порты, указанные в качестве хоста и порта.

Simon_Weaver
06 дек. 2018, в 22:51

Поделиться

Если вы используете Laravel в качестве Backend, а затем отредактируйте файл Controller в проекте laravel, просто вставив этот код в функцию конструктора, чтобы решить проблему CROS в вашем проекте Angular или IONIC

public function __construct(){
    header('Access-Control-Allow-Origin: *'); //just add this line
}

Anjani Barnwal
26 нояб. 2018, в 07:40

Поделиться

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

N-ate
06 нояб. 2018, в 20:59

Поделиться

Мой был вызван недействительными отношениями в моделях, которые я пытался запросить. Выяснилось, отлаживая ответ, который он разбил на отношение.

J.Kirk.
01 сен. 2018, в 15:38

Поделиться

Я не так стара, как другие вопросы, но я просто боролся с этим в приложении Ionic-Laravel, и отсюда ничего не работает (и других сообщений), поэтому я установил https://github.com/barryvdh/laravel-cors дополнение в Laravel и начал, и он работает очень хорошо.

gersonmontenegro
17 авг. 2018, в 12:56

Поделиться

Ещё вопросы

  • 1Сценарий Python, который перемещает определенные файлы между сегментами S3
  • 0angularjs: сортировка с использованием статусов приложения?
  • 1Запись из таблицы SQL Server CE в файл Excel
  • 0извлекать несуществующую строку как NULL при присоединении
  • 0Выберите количество с двумя условиями в одном псевдониме
  • 0Удалить из всех таблиц, где ip равен ip
  • 1Javascript document.cookie = «ключ = значение» добавляется вместо замены
  • 0Как настроить все модули отключить только модуль викторины включен в Moodle?
  • 0Как добавить IMG в таблицу динамически?
  • 0Как представить символ двойных кавычек («) в регулярном выражении, используя CakePHP?
  • 1openshift — как получить конечную точку веб-сервиса
  • 1Как настроить app.config для получения тестовых данных из файла Excel с помощью Nunit?
  • 0кодировка символов для смешанных данных
  • 1Установка нового сервера Glassfish на Eclipse Indigo
  • 1Поиск нескольких атрибутов в Монго с Метеором
  • 1Поток выполнения веб-приложения?
  • 0Как я могу создать <select> optgroups в HTML, используя данные из MySQL?
  • 0Как проверить «бинарный» или неустановленный символ *?
  • 1Ошибка сериализации Gson с val в котлине
  • 0Показать данные, которых нет в другой таблице, с кодом codeigniter соединения
  • 0Как использовать SOAP API с кодом входа в систему и сессией
  • 0Что делать, если уравнение возвращает nan в качестве ответа?
  • 0Проблемы с прототипированием структуры (неправильное использование неопределенного типа) c ++
  • 0выводить две таблицы из базы данных за один раз
  • 0Использование директивы для присоединения объекта с доступом к области видимости к элементу HTML
  • 0Как определить служебную переменную как текущий маршрут?
  • 0Tumblr фотосет, блокирующий HTML
  • 0Средневзвешенное значение по порядку в углах
  • 0Как подключиться к серверу sql используя php в xampp
  • 1Заменить существующие R блестящие данные htmlwidget новыми данными
  • 0Глобальная переменная Twig для каждого пакета, Symfony2
  • 0Перенаправление на страницу успеха с заголовком в Swift Mailer
  • 0Получение выбранного значения из выпадающего списка, помещенного в div
  • 1применить вычитание столбцов для определенных строк
  • 1Почему текст Snackbar исчезает, если текст слишком длинный?
  • 1Как изменить / обновить данные и состояние записи объекта Dynamics crm с Активного на Неактивный с помощью Javascript
  • 0Невозможно обновить значение индекса `$ scope` из клика DOM
  • 1Dagger 2 Android — зависимости inject () в ViewModels vs Application со ссылками на зависимости
  • 1Отправить письмо без аутентификации
  • 0AngularJS — не может изменить значение поля ввода
  • 1Как я могу приносить информацию из ElasticSearch в пакетном режиме, если она находится на многих уровнях?
  • 1Функция d3.queue.await не вызывается
  • 0Шаблон FlowType не изменяет размеры элементов
  • 1Получить количество строк в изображении, используя AForge или OpenCV
  • 1добавить новую строку другого цвета в конце таблицы
  • 1Задание пути к классу для JAR-файла Oracle JDBC в сентосах
  • 0выберите для обновления дважды к той же таблице ключом diffrenet, вызывающим взаимоблокировку в MySQL
  • 1Как вытащить данные с сервера sas в hdfs, используя Java?
  • 0Строка в кавычках не завершается должным образом при попытке запустить мой код
  • 1Что является лучшим способом реализовать поток C # для обработки функций, чтобы получить данные в базе данных без блокировки пользовательского интерфейса

Сообщество Overcoder

I’ was trying get simple JSON result via Swagger API but I cannot see body of JSON. I’m getting error «Unknown response type»

enter image description here

DashboardController.cs

Web.API.Controllers
{
    [Produces("application/json")]
    [Route("api/dashboards")]
    public class DashboardController : Controller
    {
        private readonly DbContext context;

        public DashboardController(DbContext context)
        {
            this.context = context;
        }

        /// <summary>
        /// Describe this method here. 
        /// </summary>
        [HttpGet]
        public async Task<IActionResult> GetDashboard(int id)
        {
            var entity = await context.Dashboards
                .Include(d => d.DashboardType)
                .SingleOrDefaultAsync(d => d.Id == id);
            return Ok(entity);
        }
    }
}

Does anybody know what’s problem ? I’ve added [Produces(«application/json»)] on Controller manually, tested it Mozzila and Chrome and the same thing.

Startup.cs

namespace Web.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddDbContext<DbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));

            services.AddMvc();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info { Title = "Test API", Description ="Swagger core test API" });
                var xmlPath = System.AppDomain.CurrentDomain.BaseDirectory + @"Test.Web.API.xml";
                c.IncludeXmlComments(xmlPath);
            });

            services.AddTransient<DatabaseDeployer>();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, DatabaseDeployer deployer)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c =>
                {
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Core API");
                });
            }

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
            app.UseMvc();
            deployer.Migrate();
        }
    }
}

asked Mar 27, 2018 at 10:36

redux17's user avatar

redux17redux17

6455 gold badges11 silver badges30 bronze badges

Well how would Swagger know what your method returns?

Either make sure it can find out what you return through your method declaration:

[HttpGet]
public async Task<DashBoardData> GetDashboard(int id)

Or if you want to keep the IActionResult, at least annotate what it’s going to be:

[HttpGet]
[SwaggerResponse(200, typeof(DashBoardData), "Successful Request.")]
public async Task<IActionResult> GetDashboard(int id)

Assuming DashBoardData is the class that is returned from your query.

answered Mar 27, 2018 at 10:43

nvoigt's user avatar

nvoigtnvoigt

74.2k26 gold badges90 silver badges140 bronze badges

1

I’ve resolved this. Problem was with this part in Startup.cs file

  app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });

when I delete it I got json response result and works fine.

answered Mar 28, 2018 at 13:20

redux17's user avatar

redux17redux17

6455 gold badges11 silver badges30 bronze badges

Понравилась статья? Поделить с друзьями:
  • Как составить график уборки по неделям
  • Как исправить эту неисправность
  • Как найти певца если забыл имя
  • Как составить бизнес текст
  • Как найти скрытый альбом на сяоми