ThinkPHP5 は、PHP をベースにしたオープンソースの Web アプリケーション フレームワークで、その設計コンセプトはシンプル、直感的、柔軟です。ただし、ThinkPHP5 フレームワークを使用して開発する場合、いくつかの問題やエラーが発生する可能性があります。その中でもフォーム送信時のエラーはよくあるトラブルの一つです。この記事では、ThinkPHP5の送信フォームでエラーが発生する原因と解決策を紹介します。
1. エラーの原因
ThinkPHP5 では、post メソッドを使用してフォーム データを送信することも、put や delete などの他のメソッドを使用することもできます。ただし、フォーム データを送信するときに、次の図に示すように、「この HTTP メソッドは送信できません」というエラー メッセージが表示されることがあります。
このエラー メッセージが表示される理由は、ブラウザが「OPTIONS」と呼ばれる事前チェック メカニズムを使用しているためです。 POST や PUT などの単純でないリクエスト メソッドを使用してデータを送信する場合、ブラウザはまず OPTIONS リクエストを送信して、サーバーがこのリクエスト メソッドをサポートしているかどうかを判斷します。サーバーがサポートしていない場合、上記のエラーメッセージが表示されます。
2. 解決策
- クロスドメイン サポートを有効にする
まず、クロスドメインとは何かを理解します。クロスドメインとは、あるドメイン名の JavaScript コードを別のドメイン名の Web ページ上で実行することを指します。厳密に言えば、プロトコル、ドメイン名、ポートが異なる限り、それらはすべて別のドメインとみなされ、クロスドメインの問題が発生します。フォーム データを送信するときに、クロスドメインの問題が原因で上記のエラーが発生する場合があります。
解決策は、サーバー側でクロスドメインのサポートを有効にすることです。 ThinkPHP5 では、構成ファイル config.php に次のコードを追加できます。
//?開啟跨域支持 'cross_domain'???=>?[ ????'allow_origin'?=>?['*'], ????'allow_methods'?=>?['POST','GET','OPTIONS','PUT','DELETE'], ????'allow_headers'?=>?['*'], ????'expose_headers'=>?['token'], ????'max_age'???????=>?3600, ????'allow_credentials'?=>?true, ],
このうち、allow_origin パラメーターは許可されるドメイン名を指定します。 はすべてのドメイン名が許可されることを意味します。 allow_methods パラメータは、許可されるリクエスト メソッドを指定します。PUT や DELETE などの単純でないリクエスト メソッドも追加する必要があります。 allow_headers パラメーターは、許可されるリクエスト ヘッダー情報を指定します。 は、任意のリクエスト ヘッダーを受け入れることを意味します。 Expose_headers パラメーターはユーザーが取得できる追加情報を指定し、token はトークン情報の取得が許可されることを示します。 max_age パラメータは、キャッシュに許可される時間を秒?yún)g位で指定します。 allow_credentials パラメーターは、Cookie などの ID 資格情報の使用が許可されることを示します。
- リクエスト メソッドを変更する
クロスドメイン サポートを有効にしたくない場合は、リクエスト メソッドを変更することで問題を解決することもできます。フォーム データを送信するときに、ブラウザーの事前チェックの問題を回避するために、リクエスト メソッドを POST に変更できます。
HTML では、次のようにフォームのメソッド屬性を変更できます:
<form method="POST">
JavaScript では、次のように ajax リクエストの type 屬性を変更できます:
$.ajax({ ????type:?'POST', ????url:?'http://example.com/path/to/api', ????data:?postData, ????success:?function(data)?{ ????????console.log(data); ????} });
- nginx 構成の変更
Nginx を Web サーバーとして使用しているときに上記のエラーが発生した場合は、次の構成を nginx.conf ファイルに追加できます:
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; ????} ????... }
Among Access-Control-Allow-Origin 、 Access-Control-Allow-Methods、 Access-Control-Allow-Headers、 Access-Control-Max-Age およびその他のパラメーターは、上で説明したものと同じ意味を持ちます。
概要
フォーム データ送信時のエラーはよくある問題ですが、初心者にとっては解決するのが難しい場合があります。この記事では、読者が ThinkPHP5 フレームワークをより良く使用できるように、フォーム送信時のエラーの理由と解決策を紹介します。
以上がthinkPHP5 送信フォームのエラー報告の理由と解決策の分析の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)