Chrome扩展客户端显示成功,但服务器生成500错误



我已经为此纠结了半天,因为我不知道为什么在一个控制台上它成功了,而在另一个控制台却不成功。

我正在尝试从chrome扩展/客户端到flask服务器进行POST调用。

background.js

fetch('http://0.0.0.0:5000/test',
{
method:'POST',
body: JSON.stringify({"name":"daniel"}),
headers: {
"Content-Type": "application/json;charset=UTF-8",
'Accept': 'application/json'
}       
})
.then(response => response.json())
.then(json => console.log(JSON.stringify(json))); 

manifest.json

{
"manifest_version": 2,
"name": "To be named",
"description": "This extension helps...",
"version": "0.1.0",
"permissions": [
"identity",
"identity.email",
"http://0.0.0.0:5000/test"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},  
"content_scripts": [{
"matches": ["https://www.youtube.com/"], 
"js": ["content.js"],
"css": ["styles.css"]
}]
}

PY(烧瓶(

@blueprint.route('/test', methods=['GET', 'POST'])
def test():
if request.method == 'POST':
return request.json#{"status": "OK", "status_code": 200, "data": data}
elif request.method == 'GET':
return request.json
else:
return 'nothing printed'

迄今为止尝试的解决方案:

  • request.loads/dumpts(request.json(

    在烧瓶上安装CORS

    将内容类型更改为内容类型

^所有这些解决方案只是返回null作为响应而不是错误,并且没有获得后台控制台中显示的实际数据

后台js控制台:在此处输入图像描述

测试开发:

在此处输入图像描述

TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.

控制台上:

Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)

空屏幕截图

为您的test路由尝试以下代码:

@blueprint.route('/test', methods=['GET', 'POST'])
def test():
if request.method == 'POST':
response_dict = {
"status": "OK",
"status_code": 200,
"data": data 
}
return jsonify(response_dict) # Import jsonify: from flask import jsonify
elif request.method == 'GET':
return jsonify(request.json)
else:
return 'nothing printed'

request.json只是用默认参数调用request.get_json(),并尝试将请求数据解析为JSON,它不返回Response,这就是它是无效响应的原因。

如果您想向客户端返回一些JSON,jsonify是一个方便的函数。

文档:https://flask.palletsprojects.com/en/1.1.x/api/#flask.json.jsonify

相关内容

  • 没有找到相关文章

最新更新