Problem mit Content-Type: application/json

Discussions and requests related to new CMSimple features, plugins, templates etc. and how to develop.
Please don't ask for support at this forums!
manu
Posts: 730
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Problem mit Content-Type: application/json

Post by manu » Thu Dec 13, 2018 1:26 pm

Kann sich da jemand einen Reim drauf machen?
Ich setze in einer (leeren) plugin/index.php:

Code: Select all

header('Content-Type: application/json');
echo json_encode(array("foo" => "bar"));
exit;
Raus kommt so etwas:

Code: Select all

...��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{"foo":"bar"}
In einer standalone.php funktioniert es ohne diese Zeichen.
Irgendwelche Ideen?
Gruss
manu

EDIT:
ach ja CMSimple 1.7.2

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Problem mit Content-Type: application/json

Post by cmb » Thu Dec 13, 2018 3:22 pm

manu wrote:
Thu Dec 13, 2018 1:26 pm
Kann sich da jemand einen Reim drauf machen?
Ich setze in einer (leeren) plugin/index.php:

Code: Select all

header('Content-Type: application/json');
echo json_encode(array("foo" => "bar"));
exit;
Wenn du CMSimple_XH mit eigener Ausgabe vorzeitig verlassen willst, dann solltest du zuvor unbedingt gestartete Ausgabepuffer zurücksetzen, also etwa:

Code: Select all

while (ob_get_level()) ob_end_clean();
Wenn du den Content-Type überschreibst, dann am besten auch den Zeichensatz mit angeben:

Code: Select all

header('Content-Type: application/json; charset=UTF-8');
Christoph M. Becker – Plugins for CMSimple_XH

manu
Posts: 730
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Problem mit Content-Type: application/json

Post by manu » Thu Dec 13, 2018 5:22 pm

Danke Christoph, das wars.
Wer schreibt denn da schon den Ausgabepuffer voll (immerhin über 2400 Byte), wir sind doch in der plugin loader Sequenz.
Von der Architektur her wüsste ich nicht, wie oder wo ich es anders machen könnte, hast Du eine Idee? ZBsp. bei meinem OnePage Mailform mache ich einige solche Sachen.

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Problem mit Content-Type: application/json

Post by cmb » Thu Dec 13, 2018 10:32 pm

manu wrote:
Thu Dec 13, 2018 5:22 pm
Wer schreibt denn da schon den Ausgabepuffer voll (immerhin über 2400 Byte), wir sind doch in der plugin loader Sequenz.
Gute Frage! Schau dir doch mal genauer an, was ohne das Bereinigen der Ausgabepuffer ausgegeben wird:

Code: Select all

wget -O- http://example.com | hexdump -C
Christoph M. Becker – Plugins for CMSimple_XH

manu
Posts: 730
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Problem mit Content-Type: application/json

Post by manu » Fri Dec 14, 2018 7:23 am

cmb wrote:
Thu Dec 13, 2018 10:32 pm
...

Code: Select all

wget -O- http://example.com | hexdump -C
wget auf einer WinX Maschine? Gibst Du mir einen crashkurs? runtergeladen, Systempfad händisch (wo ist denn nur die Einstellung schon wieder?) angepasst, ächz. hexdump? von hier?

manu
Posts: 730
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Problem mit Content-Type: application/json

Post by manu » Fri Dec 14, 2018 9:06 am

cmb wrote:
Thu Dec 13, 2018 10:32 pm
...
Gute Frage! Schau dir doch mal genauer an, was ohne das Bereinigen der Ausgabepuffer ausgegeben wird:

Code: Select all

wget -O- http://example.com | hexdump -C
Bin etwas ratlos:

Code: Select all

C:\xampp\htdocs\CMSimpleTinyGit>wget -O- http://localhost/CMSimpleTinyGit/?tinymce5 | hexdump -C
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
--2018-12-14 09:46:46--  http://localhost/CMSimpleTinyGit/?tinymce5
Auflösen des Hostnamen »localhost«.... 127.0.0.1, ::1
Verbindungsaufbau zu localhost|127.0.0.1|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 404 Not Found
2018-12-14 09:46:46 FEHLER 404: Not Found.
Den querystring in der URL kann er wohl nicht verarbeiten.

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Problem mit Content-Type: application/json

Post by cmb » Fri Dec 14, 2018 11:35 am

manu wrote:
Fri Dec 14, 2018 7:23 am
wget auf einer WinX Maschine?
Ich nutze WSL, und kann es nur empfehlen.
manu wrote:
Fri Dec 14, 2018 9:06 am
Den querystring in der URL kann er wohl nicht verarbeiten.
Sollte grundsätzlich funktionieren. Eventuell müsstest du die URL in doppelte Anführungszeichen setzen, oder sonst irgendwie bestimmte Zeichen maskieren, obwohl ein Fragezeichen eigentlich okay sein sollte.
Christoph M. Becker – Plugins for CMSimple_XH

manu
Posts: 730
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Problem mit Content-Type: application/json

Post by manu » Fri Dec 14, 2018 12:51 pm

cmb wrote:
Fri Dec 14, 2018 11:35 am
...
Sollte grundsätzlich funktionieren. Eventuell müsstest du die URL in doppelte Anführungszeichen setzen, oder sonst irgendwie bestimmte Zeichen maskieren, obwohl ein Fragezeichen eigentlich okay sein sollte.
Habe ich alles versucht. Sobald ein querystring dran hängt, gibt es einen 404.

manu
Posts: 730
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Problem mit Content-Type: application/json

Post by manu » Fri Dec 14, 2018 12:54 pm

@cmb: versuche es doch bitte mal auf Deinem System. Das script in irgendeinem plugin/index.php stoppen. Mir scheint, Du hast da die besseren Testmöglichkeiten. Mir läuft grad wieder die Zeit davon.
merci und gruss Manu

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Problem mit Content-Type: application/json

Post by cmb » Fri Dec 14, 2018 2:42 pm

manu wrote:
Fri Dec 14, 2018 12:54 pm
@cmb: versuche es doch bitte mal auf Deinem System. Das script in irgendeinem plugin/index.php stoppen.
Sauberes CMSimple_XH 1.7.2 mit plugins/tinymce5/index.php:

Code: Select all

<?php

header('Content-Type: application/json');
echo json_encode(array("foo" => "bar"));
exit;

Code: Select all

cmb@ENTERPRISE:~$ wget -O- http://localhost/xhrel15/?tinymce5 | hexdump -C
--2018-12-14 15:40:58--  http://localhost/xhrel15/?tinymce5
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13 [application/json]
Saving to: ‘STDOUT’

-                   100%[===================>]      13  --.-KB/s    in 0s

2018-12-14 15:40:59 (846 KB/s) - written to stdout [13/13]

00000000  7b 22 66 6f 6f 22 3a 22  62 61 72 22 7d           |{"foo":"bar"}|
0000000d
Bei mir funktioniert die Anfrage wie gewünscht, und es werden keine weiteren Zeichen ausgegeben. :?
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply