ThinkPHP5 ist ein Open-Source-Webanwendungsframework, das auf PHP basiert. Sein Designkonzept ist einfach, intuitiv und flexibel. Bei der Entwicklung mit dem ThinkPHP5-Framework können jedoch einige Probleme und Fehler auftreten. Dabei sind Fehler beim Absenden von Formularen eines der häufigsten Probleme. In diesem Artikel werden die Gründe und Lösungen für Fehler im ThinkPHP5-Einreichungsformular vorgestellt.
1. Grund für den Fehler
In ThinkPHP5 können Sie die Post-Methode verwenden, um Formulardaten zu übermitteln, oder Sie können andere Methoden wie „Put“ und „Delete“ verwenden. Beim Absenden von Formulardaten erscheint jedoch manchmal die Fehlermeldung: „Diese HTTP-Methode darf nicht übermittelt werden“, wie in der folgenden Abbildung dargestellt.
Der Grund für diese Fehlermeldung ist, dass der Browser einen Vorabprüfmechanismus namens „OPTIONS“ verwendet. Beim Senden von Daten mit nicht einfachen Anfragemethoden wie POST und PUT sendet der Browser zunächst eine OPTIONS-Anfrage, um festzustellen, ob der Server diese Anfragemethode unterstützt. Wenn der Server dies nicht unterstützt, erscheint die obige Fehlermeldung.
2. Lösung
Verstehen Sie zunächst, was Cross-Domain ist. Unter domänenübergreifend versteht man die Ausführung von JavaScript-Code eines Domänennamens auf einer Webseite eines anderen Domänennamens. Genau genommen werden Protokoll, Domänenname und Port als unterschiedliche Domänen betrachtet, solange sie unterschiedlich sind, und es treten domänenübergreifende Probleme auf. Bei der Übermittlung von Formulardaten kann der oben genannte Fehler aufgrund domänenübergreifender Probleme auftreten.
Die Lösung besteht darin, domänenübergreifende Unterstützung auf der Serverseite zu ermöglichen. In ThinkPHP5 können Sie den folgenden Code zur Konfigurationsdatei config.php hinzufügen:
// 开启跨域支持 'cross_domain' => [ 'allow_origin' => ['*'], 'allow_methods' => ['POST','GET','OPTIONS','PUT','DELETE'], 'allow_headers' => ['*'], 'expose_headers'=> ['token'], 'max_age' => 3600, 'allow_credentials' => true, ],
Darunter gibt der Parameter „allow_origin“ die zulässigen Domänennamen an und bedeutet, dass alle Domänennamen zulässig sind . Der Parameter „allow_methods“ gibt die zulässigen Anforderungsmethoden an, z. B. PUT und DELETE. Der Parameter „allow_headers“ gibt die zulässigen Informationen zum Anforderungsheader an. bedeutet, dass jeder Anforderungsheader akzeptiert wird. Der Parameter „exposure_headers“ gibt die zusätzlichen Informationen an, die Benutzer abrufen dürfen, und „token“ gibt an, dass Token-Informationen abgerufen werden dürfen. Der Parameter max_age gibt die für das Caching zulässige Zeit in Sekunden an. Der Parameter „allow_credentials“ gibt an, dass Identitätsanmeldeinformationen wie Cookies verwendet werden dürfen.
Wenn Sie die domänenübergreifende Unterstützung nicht aktivieren möchten, können Sie das Problem auch durch Ändern der Anfrage lösen Verfahren. Beim Senden von Formulardaten können Sie die Anforderungsmethode auf POST ändern, um Probleme bei der Vorabprüfung des Browsers zu vermeiden.
In HTML können Sie das Methodenattribut des Formulars wie folgt ändern:
<form method="POST">
In JavaScript können Sie das Typattribut der Ajax-Anfrage wie folgt ändern: #🎜 🎜#
$.ajax({ type: 'POST', url: 'http://example.com/path/to/api', data: postData, success: function(data) { console.log(data); } });
location / { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,token'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; } ... }
Das obige ist der detaillierte Inhalt vonAnalyse der Fehlerursachen und Lösungen für thinkPHP5-Einreichungsformulare. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!