While please excuse I may make some typing errors due to English is not my native language.
I have built a forum with flarum successfully, while I failed to login through CDN.
It reported a 400 error to me when I try to login.
Here is debug output from Flarum:
POST https://flare.barz.link/login
Flarum\Http\Exception\TokenMismatchException: CSRF token did not match in file /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php on line 47
Stack trace:
1. Flarum\Http\Exception\TokenMismatchException->() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php:47
2. Flarum\Http\Middleware\CheckCsrfToken->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
3. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php:67
4. Flarum\Http\Middleware\ResolveRoute->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
5. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/SetLocale.php:51
6. Flarum\Http\Middleware\SetLocale->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
7. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php:31
8. Flarum\Http\Middleware\AuthenticateWithSession->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
9. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php:52
10. Flarum\Http\Middleware\RememberFromCookie->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
11. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/StartSession.php:61
12. Flarum\Http\Middleware\StartSession->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
13. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php:46
14. Flarum\Http\Middleware\CollectGarbage->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
15. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php:28
16. Flarum\Http\Middleware\ParseJsonBody->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
17. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/HandleErrors.php:57
18. Flarum\Http\Middleware\HandleErrors->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
19. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php:25
20. Flarum\Http\Middleware\InjectActorReference->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
21. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:76
22. Laminas\Stratigility\MiddlewarePipe->process() /home/foo/www/flare.barz.link/vendor/middlewares/request-handler/src/RequestHandler.php:84
23. Middlewares\RequestHandler->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
24. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/middlewares/base-path-router/src/BasePathRouter.php:101
25. Middlewares\BasePathRouter->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
26. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php:36
27. Laminas\Stratigility\Middleware\OriginalMessages->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
28. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/middlewares/base-path/src/BasePath.php:73
29. Middlewares\BasePath->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
30. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Middleware/ProcessIp.php:24
31. Flarum\Http\Middleware\ProcessIp->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/Next.php:51
32. Laminas\Stratigility\Next->handle() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:76
33. Laminas\Stratigility\MiddlewarePipe->process() /home/foo/www/flare.barz.link/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:65
34. Laminas\Stratigility\MiddlewarePipe->handle() /home/foo/www/flare.barz.link/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php:96
35. Laminas\HttpHandlerRunner\RequestHandlerRunner->run() /home/foo/www/flare.barz.link/vendor/flarum/core/src/Http/Server.php:44
36. Flarum\Http\Server->listen() /home/foo/www/flare.barz.link/public/index.php:26
php flarum info
outputs:
Flarum core 1.0.4
PHP version: 8.0.6
Loaded extensions: Core, date, libxml, openssl, pcre, zlib, ctype, dom, fileinfo, filter, hash, json, mbstring, pcntl, SPL, PDO, bz2, posix, readline, Reflection, session, SimpleXML, standard, tokenizer, xml, xmlreader, xmlwriter, mysqlnd, bcmath, Phar, curl, exif, gd, iconv, imap, intl, mysqli, pdo_mysql, pdo_sqlite, sqlite3, tidy, zip, apcu, imagick, Zend OPcache
+--------------------------------+-------------+--------+
| Flarum Extensions | | |
+--------------------------------+-------------+--------+
| ID | Version | Commit |
+--------------------------------+-------------+--------+
| flarum-flags | v1.0.0 | |
| flarum-subscriptions | v1.0.0 | |
| flarum-tags | v1.0.3 | |
| flarum-suspend | v1.0.0 | |
| flarum-approval | v1.0.0 | |
| fof-follow-tags | 1.0.1 | |
| flarum-nicknames | v1.0.0 | |
| fof-terms | 1.0.0 | |
| fof-linguist | 1.0.0 | |
| clarkwinkelmann-status | 1.0.0 | |
| fof-recaptcha | 1.0.0 | |
| fof-user-bio | 1.0.0 | |
| fof-socialprofile | 1.1.0 | |
| fof-reactions | 1.0.1 | |
| fof-pages | 1.0.1 | |
| fof-nightmode | 1.0.0 | |
| fof-formatting | 1.0.1 | |
| fof-drafts | 1.0.3 | |
| fof-byobu | 1.0.0 | |
| fof-bbcode-tabs | 1.0.0 | |
| the-turk-diff | 1.1.1 | |
| fof-doorman | 1.0.0 | |
| fof-upload | 1.0.2 | |
| flarum-sticky | v1.0.0 | |
| flarum-statistics | v1.0.0 | |
| flarum-mentions | v1.0.0 | |
| flarum-markdown | v1.0.1 | |
| flarum-lock | v1.0.0 | |
| flarum-likes | v1.0.0 | |
| flarum-lang-english | v1.0.0 | |
| flarum-emoji | v1.0.0 | |
| flarum-bbcode | v1.0.0 | |
| pipecraft-id-slug | v1.1.0 | |
| flarum-lang-chinese-simplified | v1.0.4.0810 | |
| phenomlab-fancybox-wrapper | 0.8 | |
| fof-best-answer | 1.1.4 | |
| fof-cookie-consent | 1.0.1 | |
| fof-links | 1.0.0 | |
| fof-polls | 1.0.3 | |
| fof-profile-image-crop | 1.0.0 | |
| fof-share-social | 1.0.0 | |
| fof-subscribed | 1.0.0 | |
| fof-username-request | 1.0.0 | |
| v17development-seo | v1.8.0 | |
| clarkwinkelmann-circle-groups | 1.0.0 | |
+--------------------------------+-------------+--------+
Base URL: https://flare.barz.link
Installation path: /home/foo/www/flare.barz.link
While I used some tricks to configure URL in flarum's config.php
to made it accessible through the origin server:
/* flame.barz.link is my original address while flare.barz.link is proxied through Azure CDN. */
<?php
if (isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] == 'flame.barz.link') {
$Server = "https://flame.barz.link";
} else {
$Server = "https://flare.barz.link";
}
return array (
'debug' => true,
'database' =>
array (
'driver' => 'mysql',
'host' => 'localhost',
'port' => 3306,
'database' => '',
'username' => '',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => NULL,
'prefix_indexes' => true,
),
"url" => "$Server" ,
'paths' =>
array (
'api' => 'api',
'admin' => 'admin',
),
'headers' =>
array (
'poweredByHeader' => true,
'referrerPolicy' => 'same-origin',
),
);
My Azure CDN configuration (grabbed through Azure CLI)
az cdn endpoint list -g flare.barz.link --profile-name flare-barz-link
[
{
"contentTypesToCompress": [
"application/eot",
"application/font",
"application/font-sfnt",
"application/javascript",
"application/json",
"application/opentype",
"application/otf",
"application/pkcs7-mime",
"application/truetype",
"application/ttf",
"application/vnd.ms-fontobject",
"application/xhtml+xml",
"application/xml",
"application/xml+rss",
"application/x-font-opentype",
"application/x-font-truetype",
"application/x-font-ttf",
"application/x-httpd-cgi",
"application/x-javascript",
"application/x-mpegurl",
"application/x-opentype",
"application/x-otf",
"application/x-perl",
"application/x-ttf",
"font/eot",
"font/ttf",
"font/otf",
"font/opentype",
"image/svg+xml",
"text/css",
"text/csv",
"text/html",
"text/javascript",
"text/js",
"text/plain",
"text/richtext",
"text/tab-separated-values",
"text/xml",
"text/x-script",
"text/x-component",
"text/x-java-source"
],
"defaultOriginGroup": null,
"deliveryPolicy": null,
"geoFilters": [],
"hostName": "foo-flare.azureedge.net",
"id": "/subscriptions/87b1416c-c887-4724-924e-04972e2dcd47/resourcegroups/flare.barz.link/providers/Microsoft.Cdn/profiles/flare-barz-link/endpoints/foo-flare",
"isCompressionEnabled": true,
"isHttpAllowed": true,
"isHttpsAllowed": true,
"location": "Global",
"name": "foo-flare",
"optimizationType": null,
"originGroups": [],
"originHostHeader": "flare.barz.link",
"originPath": null,
"origins": [
{
"enabled": true,
"hostName": "flame.barz.link",
"httpPort": null,
"httpsPort": null,
"name": "flame-barz-link",
"originHostHeader": null,
"priority": 1,
"privateLinkAlias": null,
"privateLinkApprovalMessage": null,
"privateLinkLocation": null,
"privateLinkResourceId": null,
"weight": 1000
}
],
"probePath": null,
"provisioningState": "Succeeded",
"queryStringCachingBehavior": "BypassCaching",
"resourceGroup": "flare.barz.link",
"resourceState": "Running",
"systemData": null,
"tags": {},
"type": "Microsoft.Cdn/profiles/endpoints",
"urlSigningKeys": null,
"webApplicationFirewallPolicyLink": null
}
]
Is there something mistake I made? Please also let me know if you need any information from me, thanks.