python服务访问ajax调用,CORS错误

Posted

技术标签:

【中文标题】python服务访问ajax调用,CORS错误【英文标题】:python service access to ajax call , CORS error 【发布时间】:2021-11-10 15:18:41 【问题描述】:

我迷失了这个问题, 我有一个用 python 编写的服务,我需要通过 ajax 调用从网页访问它

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 策略阻止:无“访问控制允许来源” 请求的资源上存在标头。

Web 应用程序位于 IIS 下。 问题是 : 如果我在 python 脚本中将 0.0.0.0 设置为地址,我应该在 Web 应用程序中调用哪个地址? 我尝试机器 ipv4 地址但不运行。 我如何解决 cors 问题,我似乎正确地包含了烧瓶库。

感谢大家的热心回复

【问题讨论】:

在 app.run 之前尝试 cors 设置。 【参考方案1】:

您的代码中未正确配置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()

【讨论】:

嗨,错误是一样的,我完全复制了你发布的代码......我当然错过了一些东西,我是 python 的新手...... [...] 此时您必须定义结果或实现 API 功能。 好的,感谢 Vimlesh 的答案正常运行,抱歉我迟到的答案 @Franz78x 很高兴知道该解决方案适合您。请接受解决方案。

以上是关于python服务访问ajax调用,CORS错误的主要内容,如果未能解决你的问题,请参考以下文章

ajax 查询中 Java + Spring 的 CORS 策略错误

无法解决对 Express API 的 AJAX 调用的 CORS 错误

从 Ajax 调用 Spring Boot Rest API 时出现 CORS 错误

从其他域(jquery ajax)访问托管在 aws ec2 上的 rest 服务但出现 CORS 错误

获取拒绝访问错误

AngularJS ajax调用中的CORS错误[重复]