• 1400/02/02

خروجی گرفتن از نرم افزار :

سلام و وقت بخیر خدمت استاد گرامی

بنده در بکند پروژه که با webapi زده شده ، تنظیمات مربوط به cors انجام شده

اما هنگام اجرای برنامه از Android Studio نمیتونه api هارو بگیره و چیزی نمایش داده نمیشه

مشکل Allow-Origin در سمت بکند که درسته ، در interceptor کلاینت هم کامل کردم

متن ارروری که دریافت میکنم 

Capacitor http://localhost/vendor-es2015.js  - Msg: ERROR [object Object]…

آیا در فایل Capacitor.config.json نیاز داریم به 

"server": {
   "hostname": "example.com",
   "androidScheme": "https"
 }

تا بتونه api هارو دریافت کنه ؟؟

ممنون میشم راهنمایی کنید

 

  • 1400/02/04
  • ساعت 11:38

سلام دوست من

در interceptor به این صورت عمل کنین :

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        return from(Plugins.Storage.get({key: 'zoomlan-cookie'})).pipe(map((token: { value: string }) => {
            if (token !== null && token.value !== null) {
                return req.clone({
                    url: DomainName + req.url,
                    headers: req.headers
                        .append('Access-Control-Allow-Origin', '*')
                        .append('Access-Control-Allow-Methods', ['POST', 'GET', 'OPTIONS', 'DELETE', 'PUT'])
                        .append('Access-Control-Allow-Headers',
                            ['append', 'delete', 'entries', 'foreach', 'get', 'has', 'keys', 'set', 'values', 'Authorization'])
                        .append('accept-language', 'en-US,en;q=0.9,fa;q=0.8')
                        .append('Authorization', 'Bearer ' + token.value),
                    withCredentials: false
                });
            } else {
                return req.clone({
                    url: DomainName + req.url,
                    headers: req.headers
                        .append('Access-Control-Allow-Origin', '*')
                        .append('Access-Control-Allow-Methods', ['POST', 'GET', 'OPTIONS', 'DELETE', 'PUT'])
                        .append('Access-Control-Allow-Headers',
                            ['append', 'delete', 'entries', 'foreach', 'get', 'has', 'keys', 'set', 'values', 'Authorization'])
                        .append('accept-language', 'en-US,en;q=0.9,fa;q=0.8'),
                    withCredentials: false
                });
            }
        }), switchMap((request: HttpRequest<any>) => {
            return next.handle(request);
        }));
    }

  • 1400/02/05
  • ساعت 01:36

سلام مجدد ، بسیار ممنون از وقتی که گذاشتید

با وجود کد های شما ،  اگر بازم در فایل Capacitor.config.json  تنظیمات ذکر شده رو اعمال نکنم ارور 

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

دریافت میکنم  به همراه ارور (همراه همیشگی بنده)  : 

E/Capacitor/Console: File: https://demo2.mkhalesi.ir/vendor-es2015.js - Line 41296 - Msg: ERROR [object Object]

 

بنده ورژن Capacitor رو به 3 تغییر دادم و از اون طرف از اندروید به "^3.0.0-rc.0",   طبق این راهنما : 

    "@angular/common": "~10.0.0",
    "@angular/core": "~10.0.0",
    "@angular/forms": "~10.0.0",
    "@angular/platform-browser": "~10.0.0",
    "@angular/platform-browser-dynamic": "~10.0.0",
    "@angular/router": "~10.0.0",
    "@capacitor/android": "^3.0.0-rc.0",
    "@capacitor/core": "^3.0.0-rc.0",
    "@capacitor/geolocation": "^0.4.3",
    "@capacitor/network": "^0.4.6",
    "@capacitor/splash-screen": "^0.3.6",
    "@capacitor/status-bar": "^0.4.6",
    "@capacitor/storage": "^0.3.6",
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/splash-screen": "^5.0.0",
    "@ionic-native/status-bar": "^5.0.0",
    "@ionic/angular": "^5.0.0",

 

شانس آخر : آیا امکان داره مربوط به Api های اندروید یا ورژن Gradle و یا دسترسی به اینترنت باشه ؟ 

ممنون میشم راهنمایی کنید 


  • 1400/02/07
  • ساعت 09:53

این نکته رو باید در نظر داشته باشین که api شما باید حتما publish شده باشه و روی server تست کنین

زمانی که پروژه با emulator اجرا بشه گاها با این خطاها مواجه میشه

api رو پابلیش کنین و بعد از پروژه خروجی apk بگیرین و در نهایت روی تلفن همراه نصب کنین

با این روش میتونین پروژه رو کامل تست کنین


  • 1400/02/08
  • ساعت 03:49

سلام ، وقت بخیر استاد

متاسفانه بعد از پابلیش و نصب اون باز هم با یه صفحه blank خالی مواجه میشم . که نمیتونه دیتا رو نمایش بده .

capacitor به درستی کار میکنه حتی چک کردن network کاربر ، Status bar و ...

E/Capacitor/Console: File: https://demo2.mkhalesi.ir/vendor.js - Line 59725 - Msg: ERROR [object Object]
E/.IonicFramewor: Invalid ID 0x00000000.
    Invalid ID 0x00000000.

سپاس از پاسخ گویی شما استاد عزیز


  • 1400/02/09
  • ساعت 08:54

سلام مجدد ، 

استاد امکان داره به خاطر استفاده نادرست از یکی از plugin های capacitor در برنامه باشه این اررور ؟ 

چون چیز درستی نمایش داده نمیشه ، متن اررور اصلا واضح نیست که مربوط به چی هست 

من permission های مربوط به پلاگین هارو درست قرار میدم ، 

api های مربوط به cap v3 درسته در Android studio

ممنون میشم راهنمایی کنید

این خطا وقت خیلی زیادی از من گرفته متاسفانه


  • 1400/02/09
  • ساعت 09:57

این مشکل ممکنه به هر دلیلی باشه دوست من

به این سادگی نمیشه گفت مشکل از کجا هستش

باید کامل بررسی بشه

فرایند خروجی گرفتن رو از اموزش ایونیک به صورت کامل و قدم به قدم مطالعه کنین احتمالا مشکل برطرف میشه

این بخش رو به AddAuthentication اضافه کنین :

.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateAudience = false,
                    ValidateIssuer = false,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("thisisasecreteforauth")),
                    ValidateLifetime = true,
                    ClockSkew = TimeSpan.FromMinutes(43200)
                };
            });

و همینطور باید CORS رو هم فعال کنین :

 services.AddCors(
                options =>
                {
                    options.AddPolicy(
                        "BarnamenevisanInfoCORS",
                        builder => builder
                            .AllowAnyOrigin()
                            .AllowAnyMethod()
                            .AllowAnyHeader()
                            .AllowCredentials()
                            .SetPreflightMaxAge(TimeSpan.FromSeconds(43200))
                    );
                });

در بخش Middleware ها هم باید این سرویس ها رو اضافه کنین:

 app.UseCors("BarnamenevisanInfoCORS");

  • 1400/02/11
  • ساعت 01:40

با سلام و عرض ادب 

استاد کد های مربوط به cors چه در سمت سرور و چه در کلاینت به درستی طبق راهنمایی شما اضافه شدند . 

در بکند مشکلی وجود نداره چون همین الان هم روی سرور پابلیش شده و داره میکنه (سایت اون که با angular هست)

در فایل Capacitor.config.json  تنظیمات مربوط به server رو در چه صورتی اضافه کنم،

 طبق این راهنمایی 

----

اگه تنظیمات مربوط به server در capacitor.config انجام بشه ، دیگه این ارور نیست !

E/Capacitor/Console: File: http://localhost/home/main - Line 0 - Msg: Access to XMLHttpRequest at 'https://example.com/homepage/get-home-page-images-by-location/4' from origin 'http://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

ممنون از وقتی که می گذارید

 


logo-samandehi