Javascript 如何解决python flask服务器响应js时的跨域问题?
我已经用JavaScript尝试了Flask服务器响应 但在前端发生了如下错误 js:10449跨源读取阻塞(CORB)阻塞跨源响应 所以我试着用CORS解决这个问题 下面是我的python测试代码Javascript 如何解决python flask服务器响应js时的跨域问题?,javascript,python,flask,jsonp,cross-origin-read-blocking,Javascript,Python,Flask,Jsonp,Cross Origin Read Blocking,我已经用JavaScript尝试了Flask服务器响应 但在前端发生了如下错误 js:10449跨源读取阻塞(CORB)阻塞跨源响应 所以我试着用CORS解决这个问题 下面是我的python测试代码 from flask import request, Flask, jsonify from flask_restful import Resource, Api from flask_cors import CORS, cross_origin app = Flask(__name__) COR
from flask import request, Flask, jsonify
from flask_restful import Resource, Api
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
app.config['CORS_HEADERS'] = ('Content-Type', 'application/json')
@app.route('/', methods=['GET'])
@cross_origin(origins = '*')
def get():
try:
parameter1 = request.args.get('parameter1')
parameter2 = request.args.get('parameter2')
parameter3 = request.args.get('parameter3')
parameter4 = request.args.get('parameter4')
parameter5 = request.args.get('parameter5')
para_dict = {'parameter1':parameter1,
'parameter2':parameter2,
'parameter3':parameter3,
'parameter4':parameter4,
'parameter5':parameter5,
}
return jsonify(para_dict)
在JavaScript中,jsonp用于消除响应错误,如下代码所示
var url = 'localhost:5002/';
var param = {
parameter1: $ {
param.parameter1
},
parameter2: $ {
param.parameter2
},
parameter3: $parameter3.val().trim(),
parameter4: $parameter4.val().trim(),
parameter5: $parameter5.val().trim()
};
$.get(url, param, function(data) {
if (data.status) {
if (!$parameter3.val().trim()) $parameter3.val(data.value);
else if (!$parameter4.val().trim()) $parameter3.val(data.value);
else if (!$parameter5.val().trim()) $parameter3.val(data.value);
chart.addPointAnnotation({
x: data.x,
y: data.y,
label: {
text: 'operation_point',
style: {
fontSize: '1rem',
padding: {
left: 10,
right: 10,
top: 5,
bottom: 5,
}
}
},
});
} else {
alert(data.msg);
}
}, 'jsonp');//using jsonp
当我检查网络时,我认为它传输得很好
下面是网络头信息
Access-Control-Allow-Origin: *
Content-Length: 98
Content-Type: application/json
Date: Thu, 09 Jan 2020 00:31:50 GMT
Server: Werkzeug/0.14.1 Python/3.7.3
但仍然会得到相同的错误
除了cors和jsonp,我还应该设置什么?您的浏览器是否执行选项cors飞行前请求?如果是这样,你的服务器处理正确吗?哦,等等。。。您正在使用JSONP。。。JSONP不应该有CORS问题,也就是说,您甚至不需要JSONP的Access Control Allow Origin头-您的服务器是否发送JSONP?如果您使用的是JSONPDoes,那么它不应该发送application/json头,这意味着如果我使用JSONP,就不必在python中使用CORS?正确,您只需要使用有效的JSONP(顺便说一句,它与json不同)和内容类型
application/javascript
,如果是这样,在Python服务器上切断连接或将JSONP更改为JSON,哪种方法更好?