Proč můj PHP kód vrátí Chybovou 400 "Váš prohlížeč odeslán neplatný požadavek."?

0

Otázka

vv Žádost API vv

    $data = $_POST['csrf'];
    $headers = [
        "x-csrf-token: $data\r\n".
        "Content-Type: application/json\r\n".
        "Accept: application/json\r\n"
    ];
    $data = <<<DATA
    {
        "username": "string",
        "password": "string",
        "gender": "Unknown",
        "birthday": "2021-11-22T23:29:51.656Z",
        "isTosAgreementBoxChecked": true,
        "email": "string",
        "locale": "string",
        "assetIds": [
            0
        ],
        "bodyColorId": 0,
        "bodyTypeScale": 0,
        "headScale": 0,
        "heightScale": 0,
        "widthScale": 0,
        "proportionScale": 0,
        "referralData": {
            "acquisitionTime": "2021-11-22T23:29:51.656Z",
            "acquisitionReferrer": "string",
            "medium": "string",
            "source": "string",
            "campaign": "string",
            "adGroup": "string",
            "keyword": "string",
            "matchType": "string",
            "sendInfo": true,
            "requestSessionId": "string",
            "offerId": "string"
        },
        "agreementIds": [
            "string"
        ],
        "identityVerificationResultToken": "string",
        "captchaId": "string",
        "captchaToken": "string",
        "captchaProvider": "string"
    }
    DATA;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://auth.roblox.com/v1/signup');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
}

http://api.aero-dev.xyz/bin/Captcha/CaptchaId.php?i=2 Server mi hlásí "Chyba 400, Váš prohlížeč odeslán neplatný požadavek." Problém je s x-csrf token, když jsem si to dal jako řetězec "x-csrf token: j8acha7hffh" to funguje. Když jsem to dal jako "x-csrf token: $data" vrátí chybu. Snažil jsem se různé způsoby, jak se blíží k této chybě. Změnil jsem záhlaví. Snažil různé způsoby, jak o to žádá. Stále nic opravuje moje chyby. Jsem nový s PHP, prosím, pomozte!

curl php
2021-11-24 01:32:21
2

Nejlepší odpověď

1

Používáte $header jako array nicméně to obsahuje dlouhé string jak jsem podezření, řádek oddělovač /r/n v dlouhý řetězec dělá potíže.

Takže změnit jednu hodnotu pole plné nový řádek oddělovače

$headers = [
    "x-csrf-token: $data\r\n".
    "Content-Type: application/json\r\n".
    "Accept: application/json\r\n"
];

do tohoto pole s více hodnotami

$headers = [
    "x-csrf-token: $data",
    "Content-Type: application/json",
    "Accept: application/json",
];

CURLOPT_HTTPHEADER Pole HTTP záhlaví pole, které chcete nastavit, v podobě array('Content-type: text/plain', 'Content-length: 100')

Více informací v https://www.php.net/manual/en/function.curl-setopt.php

2021-11-24 11:42:38
-1

Zkuste dělat toto:

"x-csrf token: ".$data."\r\n".

2021-11-24 11:37:19

Tak, jak je napsaná, vaše odpověď je nejasná. Prosím, upravit, přidat další podrobnosti, které ostatním pomohou pochopit, jak se tohle řeší otázku, zeptal se. Můžete si najít více informací o tom, jak psát dobré odpovědi v centru nápovědy.
Community

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................