何をやっても以下が発生しつづけた
Access to XMLHttpRequest at 'http://localhost:5000/room/talk/data' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
挙動を見ていると、どうもjavascript側ではなく、python側であることがわかってきた
javascript側のajaxはきちんとPOSTできているっぽい
なので、ここはいじらずにpython側だけを弄り倒す
まずはうまくいったものから始める
#!C:/Python310/python.exe
# -*- coding: utf-8 -*-
#import sys
#recieve = sys.stdin.readline()
recieve = input()
print('Content-type: text/html\n')
print(recieve)
これはつまり、ajaxのurl部で設定されたこのファイルを
#!C:/Python310/python.exe でpythonで実行し、
標準入力で入力し、標準出力で出力して、終了するだけである
つまりこれは呼び出しのたびにpythonが実行されてしまう
この標準入力を強制的にajaxに設定するのを探したが…見つからない
なのでもう一度 Flaskに挑戦
javascript側
url_top ='http://localhost:5000/room/talk/data';
$(function(){
$.ajax({
url: url_top,
type: 'POST',
data: send_data,
datatype: 'json',
}).done(function(data){
messages.textContent += 'ajax done\n';
messages.textContent += `Return data : ${data}`;
response_fee = data;
onClickSend();
}).fail(function(){
messages.textContent += 'ajax failed\n';
});
});
python側
from flask import Flask, request
app= Flask(__name__)
@app.route('/room/talk/data', methods= ['GET', 'POST'])
def get_json():
print("got some data")
# read json + reply
data= request.get_data()
print(data)
return data
if __name__== '__main__':
app.run()
予想通りエラー発生
ん?しかし微妙に以前と違う
Access to XMLHttpRequest at 'http://localhost:5000/room/talk/data' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
jquery-3.6.0.min.js:2
POST http://localhost:5000/room/talk/data net::ERR_FAILED 200
ダメ元で以下を参考にして書き直す
from flask import Flask, request
from flask_cors import CORS
app= Flask(__name__)
CORS(app)
@app.route('/room/talk/data', methods= ['GET', 'POST'])
def get_json():
print("got some data")
# read json + reply
data= request.get_data()
print(data)
return data
if __name__== '__main__':
app.run()
動いたあああああ!
![](https://static.wixstatic.com/media/d6e266_851e970fabd64737a9e3e14dec66b00b~mv2.png/v1/fill/w_980,h_527,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/d6e266_851e970fabd64737a9e3e14dec66b00b~mv2.png)
まだjsonフォーマットの不具合とかいろいろあるので、じっくりやろう
Comentarios