ホームページ  >  記事  >  バックエンド開発  >  Python のボトル ​​フレームワークでクロスドメイン リクエスト エラーの問題を処理する方法の詳細なグラフィックとテキストの説明

Python のボトル ​​フレームワークでクロスドメイン リクエスト エラーの問題を処理する方法の詳細なグラフィックとテキストの説明

高洛峰
高洛峰オリジナル
2017-03-20 09:14:571620ブラウズ

この記事では主にpythonのボトルフレームワークにおけるクロスドメインリクエストのエラーレポートの問題への対処方法を紹介していますので、困っている方は参考にしてください

Pythonのボトルフレームワークで開発する際、フロントエンドでajaxを使用する場合。クロスドメイン アクセスの場合、js コードは常に成功に失敗し、エラーになり、返される status は 200 です。ブラウザで F12 を押して URL に直接アクセスすると、次のエラー メッセージが表示されます。

XMLHttpRequest http://192.168.0.118:8081/get_mobile_number/?id=1 . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is not allowed access.

検索エンジンでエラーをクエリすると、ほとんどのことがわかります。見つかったすべての答えは、メインファイルのコードに次のコードを追加するだけで済みます

@hook('after_request')
def enable_cors():
 response.headers['Access-Control-Allow-Origin'] = '*'

しかし、実際には、解決策を追加した後です。見つかった解決策によると、引き続きエラーが発生します。以下に示すように、ブラウザーによって出力された http ヘッダーに、先ほど追加した Access-Control-Allow-Origin:* が表示されませんでした。 、表示するにはボトルのソースコードを入力してください

私はこの問題を python2 と python3 でテストしました この問題はボトルのフレームワークに存在し、次のように変更しました:

class HTTPResponse(Response, BottleException):
  def init(self, body='', status=None, headers=None, **more_headers):
    super(HTTPResponse, self).init(body, status, headers, **more_headers)
  def apply(self, response):
    response._status_code = self._status_code
    response._status_line = self._status_line
    if self._headers:
      if response._headers:
        response._headers.update(self._headers)
      else:
        response._headers = self._headers
    response._cookies = self._cookies
    response.body = self.body


繰り返しますが、ajax コードが正常であることがわかります


以上がPython のボトル ​​フレームワークでクロスドメイン リクエスト エラーの問題を処理する方法の詳細なグラフィックとテキストの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。