Servus,
ich habe folgendes Problem und vielleicht kann mir jemand helfen. Aktuell versuche ich aus einen externen Formular (App) via POST an meine REST-Schnittstelle anzudocken.
Dafür habe ich mir ein einfaches Modul zum testen geschrieben:
PHP-Code:
class FileUploadRest extends \Module
{
protected $strTemplate = 'ce_html';
public function generate()
{
if (TL_MODE == 'BE')
{
$objTemplate = new \BackendTemplate('be_wildcard');
$objTemplate->wildcard = '### MODULE FILEUPLOAD REST ###';
$objTemplate->title = $this->headline;
$objTemplate->id = $this->id;
$objTemplate->link = $this->name;
$objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
return $objTemplate->parse();
}
return parent::generate();
}
protected function compile()
{
;
$this->echoOutput($_POST);
}
protected function echoOutput($arrTable)
{
$arrOutput['response'] = $arrTable;
header('Content-type: application/json; charset=utf-8'):
echo json_encode($arrOutput);
die();
}
Daraus erstelle ich mir ein Modul und binde das ganze als Artikel in die entsprechende Seite ein. Bei GET-Parametern funktioniert soetwas wunderbar.
Nun ist es aber so, dass wenn Contao etwas per POST empfängt ein valides Request_Token verlangt wird:
PHP-Code:
// initialize.php
// 258
/**
* Check the request token upon POST requests
*/
if ($_POST && !RequestToken::validate(Input::post('REQUEST_TOKEN')))
{
// Force a JavaScript redirect upon Ajax requests (IE requires absolute link)
if (Environment::get('isAjaxRequest'))
{
header('HTTP/1.1 204 No Content');
header('X-Ajax-Location: ' . Environment::get('base') . 'contao/');
}
else
{
header('HTTP/1.1 400 Bad Request');
die_nicely('be_referer', 'Invalid request token. Please <a href="javascript:window.location.href=window.location.href">go back</a> and try again.');
}
exit;
}
und daher wird mein Modul schon garnicht ausgeführt. Ich muss irgendwie an einer Stelle vorher ran.
Hat jemand eine gute Idee wie das möglichst update-sicher hinbekomme? Ich kann auch damit leben, wenn z.B. auf der einen bestimmten Seiten das REQUEST_TOKEN einfach deaktivert wird.
Liebe Grüße,
Marq
Lesezeichen