Ich arbeite in Embarcadero RAD Studio C++, mit Indy 10.6 ODER Chilkat für den HTTP-Beitrag.
Ich habe es in einem Webbrowser mit einem RESTMAN-Add-on getestet und die Abfrage funktioniert mit denselben Einstellungen wie die Anwendung! Ich habe es dann mit POSTMAN getestet und dort funktioniert es auch. Aber nur ab meiner Bewerbung will es nicht mehr funktionieren. Es scheint, dass Cloudflare mich von der Anwendung blockiert, aber ich weiß nicht warum, da sie jahrelang einwandfrei funktioniert hat.
Ich habe etwas recherchiert und festgestellt, dass der 403-Fehler einen HTML-Code „JavaScript und Cookies zum Fortfahren aktivieren“ anstelle von JSON zurückgibt. Ich habe auch versucht, den gesendeten UserAgent zu ändern, aber es ist mir nicht gelungen.
Code: Select all
TStringStream * Send = new TStringStream(rtf) ;
Send->Write(SIR, 2*lung); // SSLOptions->Method = sslvSSLv23;
IdSSLIOHandlerSocketOpenSSL->SSLOptions->Mode = sslmClient;
IdSSLIOHandlerSocketOpenSSL->SSLOptions->VerifyDepth = 0;
IdHTTP->Request->ContentType = "application/json";
//WORKS IN POSTMAN, NOT WORK IN INDY 10 now
//IdHTTP->Request->UserAgent = "PostmanRuntime/7.49.1";
//IdHTTP->Request->CustomHeaders->AddValue("Postman-Token", "xxxxxx");
IdHTTP->Request->UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0";
IdHTTP->Request->ContentEncoding = "utf-8";
IdHTTP->Request->AcceptCharSet = "utf-8";
IdHTTP->Post(ADRESA, Send, AResponseBody);.....
//403 Forbidden, html response "Enable JavaScript and cookies to continue"
Mobile version