redirect:タグのアーカイブ|ネットマーベラス(株)データアップロード詳しい開発実績など(非公開)....主要取引先(非公開)....お見積り出し(IP認証+Oauth)隠しノウハウ、隠し資料など(IP認証+Oauth)インターネット上のアクセスボリュームUPをお約束します。bottleフレームワークでは内部のマルチスレッドhttpサーバでpasteサーバが使われるケースが多い。redirect処理を行った際にエラーが吐かれてしまうという問題に遭遇しました。処理自体は問題なく動作するのですがやはり気になります。この問題を解決するためにpasteサーバ関連で呼び出されるライブラリーのコードをトレースして原因がわかりました。この記事はその備忘録として残します。実際に起きてるエラーはこんな感じ。‘str’」これが勘違いのもとだった。ある関数returnでHTMLテンプレートに返す際にencodeやdecode処理でutf-8に変換しないと駄目な場合があります。これが抜けているのかな!?と思いきや全く違うところに問題があった。'str'python3になってからstringsは文字コードの扱いがUnicodeに変わりました。stringになる必要があり、よく使われるライブラリーではこのUnicodeへの対応がきっちり済んでいるため問題が生じるケースが少ないのですが稀にpython2.x時代からpython3ソースコード対応が中途半端なものがあります。移行が完全にできていないケースだったようです。幸いにも原因は15行目のこれ「self.wsgi_write_chunk(”)」が原因であることにすぐに気がつけた。httpプロトコルのメッセージヘッダ項目やメッセージボディが空っぽの場合にきちんと処理ができなくて20行目のエラーになってしまうというものです。まとめると、redirectの処理はメッセージヘッダの一部項目が空であるため、ライブラリーが誤って20行目のエラーを吐き出してしまう。これを回避するためにredirectへ具体的なレスポンスコードを指定してあげることでメッセージヘッダ項目が空になることを防ぐ。本記事ではアボート処理とリダイレクトについて説明する。abortの出番はWEB上のコンテンツを作る上では重要である。あるのはアクセス禁止、ファイルが存在しないケースだろう。後者はCMSの世界ではソフトウェア404を使うケースが多い。グーグルがソフトウェア404だと正しく認識してくれないため検索インデックスに該当ファイルが無いという認識が持てず古いインデックスを更新しません。結果的に悪い評価になってしまうことがあります。このような場合はabort関数を使用してハードウェア404を返してあげるとベターです。アボート処理アボート処理はWEB上で異常を示すエラーコードと共に使用するものです。Found.")リダイレクト処理リダイレクト処理は何らかの理由があって、最初のURLから別のURLへ転送します。Errorを起こしますが気にする必要はありません。使うと発生するそのようなものと解釈してください。そのような仕様で作られています。何らかの異常を示す際に使う関数であるからと理解するとわかり易いかもしれません。エラーを抑制したい場合はBottleのconfigでcatchallをFalseに設定することで止めることができます。Posts:DoS攻撃激減。python3.5でiptablesの国内IPのみの接続ルールを生成&適用。Updateが進まなくなった場合の対処や大型Update後のゴミ掃除。GZIP圧縮、コンパイルキャッシュ。viewsApacheにおけるSSL設定品質の肝。viewsApacheログからセキュリティアタックの解析をする。