簡體   English   中英

python服務訪問ajax調用,CORS錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM