決済サービスなどと連携するために他サイトからのリクエストを受け入れる必要もあるかと思います。Ajaxで使われるXMLHttpRequestなどは標準ではブラウザー側で他ドメインへのリクエストを制限しているので、一工夫が必要になります。
@route('/path/to/app', method='OPTIONS') def support_cors(): res = HTTPResponse(status=200, body=None) res.set_header('Access-Control-Allow-Origin', 'https://example.com') return res
まずは上のコードで事前に送られてくるOPTIONSリクエストに対して、クロスドメインでのリクエストが可能であることを返します。具体的にはAccess-Control-Allow-Originヘッダーでリクエストを許可するオリジン(ドメイン)を指定します。このヘッダーによってブラウザーはクロスドメインでのリクエストが可能であることを認識します。
@route('/path/to/app', method='POST') def get_data(): data = { 'foo': 'bar' } res = HTTPResponse(status=200, body=json.dumps(data)) res.set_header('Content-Type', 'application/json') res.set_header('Access-Control-Allow-Origin', 'https://example.com') return res
それから本番のPOSTリクエストが来るので、改めて、Access-Control-Allow-Originヘッダーを付けて所望のレスポンスを返します。