[英]python service access to ajax call , CORS error
我迷失了這個問題,我有一個用 python 編寫的服務,我需要通過 ajax 調用從 web 頁面訪問
python代碼如下:
import flask
from flask import request, jsonify, make_response
from flask_cors import CORS, cross_origin
from datetime import datetime, timedelta
app = flask.Flask(__name__)
app.run(host='0.0.0.0', port=5000)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
@app.route('/api/v1/resources/device/all', methods=['GET'])
@cross_origin()
def api_all():
[...]
response = jsonify(result)
response.headers.add("Access-Control-Allow-Origin", "*")
return response,status_code
ajax 電話是:
$.ajax({
type: 'get',
crossDomain: true,
dataType: "json",
url: AddressWS + '/api/v1/resources/device/all?type=A',
success: function (result) {
//.,...
}
});
錯誤是永遠的
...已被 CORS 策略阻止:所請求的資源上不存在“Access-Control-Allow-Origin”header。
web應用程序在IIS下。問題是:如果我在python腳本中設置0.0.0.0作為地址,我應該在web應用程序中調用哪個地址? 我嘗試機器 ipv4 地址但不運行。 我如何解決 cors 問題,我似乎正確地包含了 flask 庫。
謝謝大家的熱心回復
CORS 在您的代碼中配置不正確。 請在下方找到具有正確 CORS 配置的代碼。
import flask
from flask import request, jsonify, make_response
from flask_cors import CORS
from flask_restful import Api
from datetime import datetime, timedelta
app = flask.Flask(__name__)
api = Api(app)
CORS(app)
@app.route('/api/v1/resources/device/all', methods=['GET'])
def api_all():
[...]
response = jsonify(result)
status_code = 'some code'
return response,status_code
if __name__ == '__main__':
app.run()
在我的情況下試試這個,它有效,
$.ajax({
type: 'get',
dataType: 'json',
url: AddressWS + '/api/v1/resources/device/all?type=A',
cors: true,
contentType: 'application/json;charset=UTF-8',
secure: true,
headers: {
'Access-Control-Allow-Origin': '*',
},
success: function (result) {
//.,...
},
error: function (errorMessage) {
console.log('error');
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.