Hi,
es gibt ja die jquery.csrf-protection.js nun habe ich mal eine Erweiterung die ich damals für 5.2.9 programmiert habe auf der aktuellen Version ausprobiert und folgendes festgestellt.
Die Erweiterung jquery.csrf-protection.js fügt bei einem Ajax aufruf den csrf-token an die URL.
_jsonpBeforeSend: function(event, request, settings) {
if (!settings.type || settings.type.toLowerCase() !== 'get') {
return;
}
if (settings.url.indexOf('__csrf_token=') !== -1) {
return;
}
settings.url = settings.url + '&__csrf_token=' + this.getToken();
},
Im Template habe ich folgendes:
data-ajaxUrl="{url module="widgets" controller="xyzListing" action="ajaxListing" ordernumber=$detail.number}">
http://192.168.33.10/shopware/widgets/xyzListing/ajaxListing/ordernumber/SW10179.2
setzt ich einen Ajax Aufruf ab passiert das:
http://192.168.33.10/shopware/widgets/xyzListing/ajaxListing/ordernumber/SW10179.2 &__csrf_token=W7sfRprqXon2G2knoVOKOCbvo611mn
Mein Response ist leer, weil es eigentlich ? statt & sein müsste bzw. müsste man prüfen ob die URL params hat oder nicht.
Warum wurde da nicht geprüft ?
Wenn ich einfach irgendetwas übergebe zum Bsp.:
$.ajax({
url: ajaxUrl,
method: 'GET',
data: {
ajax: true,
},
http://192.168.33.10/shopware/widgets/xyzListing/ajaxListing/ordernumber/SW10179.2?ajax=true &__csrf_token=W7sfRprqXon2G2knoVOKOCbvo611mn
oder die Artikelnummer als data-attribut übergebe:
data-ajaxUrl="{url module="widgets" controller="xyzListing" action="ajaxListing"}" data-ordernumber="{$detail.number}">
$.ajax({
url: ajaxUrl,
method: 'GET',
data: {
ordernumber: number,
},
http://192.168.33.10/shopware/widgets/xyzListing/ajaxListing?ordernumber=SW10179.2 &__csrf_token=W7sfRprqXon2G2knoVOKOCbvo611mn
Ist das so gewollt?