跨源Flask服务器的Javascript错误
我对CORS和使用Flask和Javascript的请求有问题。我在域上有一个API:5000/endpoint,在domain.com上有一个前端 我最初有一个CORS错误,我安装了flask CORS,这已经停止了CORS错误 当我通过Postman向Python服务器发送请求时,它返回正确的响应。但是,我在Javascript中的fetch请求失败,当我查看chrome控制台时,没有从请求中抛出错误,但是响应的解析抛出跨源Flask服务器的Javascript错误,javascript,python,flask,fetch,Javascript,Python,Flask,Fetch,我对CORS和使用Flask和Javascript的请求有问题。我在域上有一个API:5000/endpoint,在domain.com上有一个前端 我最初有一个CORS错误,我安装了flask CORS,这已经停止了CORS错误 当我通过Postman向Python服务器发送请求时,它返回正确的响应。但是,我在Javascript中的fetch请求失败,当我查看chrome控制台时,没有从请求中抛出错误,但是响应的解析抛出TypeError:cannotread undefined的属性'js
TypeError:cannotread undefined的属性'json'。我想这和CORS有关
如何让Javascript获取访问响应的主体
Python
app = Flask(__name__)
CORS(app)
@app.route('/endpoint', methods=['POST'])
@cross_origin()
def endpoint():
if request.method == 'POST':
data = request.get_json()
code = myFunc(data)
return json.dumps(code)
if __name__ == '__main__':
app.run(host="0.0.0.0")
Javascript
fetch(addr, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: projectJson
})
.then(
response => response.json(),
error => console.log('An error occurred.', error)
)
.then(
parsedJSON => {
lastJson = parsedJSON;
window.parent.postMessage(JSON.stringify(parsedJSON), '*');
}
)
这里有一个例子
Javascript
fetch('http://127.0.0.1:5000/endpoint', {
方法:“POST”,
模式:“cors”,
标题:{
“内容类型”:“应用程序/json”,
},
body:JSON.stringify({'data':'data'}),
})
.then(response=>response.json())
。然后(数据=>{
console.log('Success:',data);
})
.catch((错误)=>{
console.error('error:',error);
})
蟒蛇
app = Flask(__name__)
CORS(app)
@app.route('/endpoint', methods=['POST'])
@cross_origin()
def endpoint():
if request.method == 'POST':
data = request.get_json()
code = myFunc(data)
return json.dumps(code)
更多信息
笔记
编写API时常见的响应格式是JSON。使用Flask编写这样的API很容易。如果从视图返回dict,它将转换为JSON响应
您需要处理中的错误。catch
axios lib可能比fetch api更强大
等等,。然后(r=>r.json(),e=>console.log(e))
不是您处理Promise
s的方式。如果要捕获错误,请在末尾使用捕获处理程序。另外,这听起来不像是一个CORS
问题-听起来你没有正确处理响应。