首页 > 编程语言 >Ajax 跨域报错 python后端处理

Ajax 跨域报错 python后端处理

时间:2023-09-15 17:44:39浏览次数:46  
标签:__ origin 跨域 python app cross Flask 报错 CORS

Ajax 跨域报错 python后端处理

个人项目,前端接口用Ajax写的,python后端部署在另一台电脑上,发出以下报错:

查询很久发现是 因为 前端向后端发送请求时,会预先发送一个OPTION的请求,然后请求通过之后才能够发送这个POST的请求。具体原因还是没有理解,只知道这个大概,有理解的可以评论区写一下。查询对应解决办法,查来的都是java的,但是不会。

在Python中,处理Ajax跨域请求的方式可以通过使用Flask这个轻量级的Web框架来实现。Flask有一个扩展库叫做Flask-CORS,它可以很方便地处理跨域请求。

首先,你需要安装Flask和Flask-CORS。你可以使用pip来安装:

pip install flask flask-cors

然后,在你的Python应用中,你需要引入这两个库,并设置一个全局的CORS策略。这里是一个简单的例子:

from flask import Flask  
from flask_cors import CORS  
  
app = Flask(__name__)  
CORS(app, supports_credentials=True)  
  
@app.route('/')  
def hello_world():  
    return 'Hello, World!'  
  
if __name__ == '__main__':  
    app.run()

在这个例子中,CORS(app, supports_credentials=True)这行代码就是设置全局的CORS策略,supports_credentials=True表示支持跨域请求携带凭证(cookies)。

对于某些特定的路由,你可能想要单独设置CORS策略,你可以这样做:

from flask import Flask, jsonify  
from flask_cors import CORS, cross_origin  
  
app = Flask(__name__)  
CORS(app, supports_credentials=True)  
  
@app.route('/')  
@cross_origin()  
def hello_world():  
    return jsonify({'message': 'Hello, World!'})  
  
if __name__ == '__main__':  
    app.run()

在这个例子中,@cross_origin()这个装饰器就是单独为这个路由设置CORS策略。

在第二个例子中,cross_origin是一个装饰器,用于为特定的路由设置跨域资源共享(CORS)策略。它是Flask-CORS库提供的一个功能。

在处理跨域请求时,你可以使用@cross_origin()装饰器来单独为某个路由设置CORS策略。它允许你自定义允许的来源(Origin)、方法(Methods)、头部(Headers)等。

下面是一个使用@cross_origin()装饰器的示例:

from flask import Flask, jsonify  
from flask_cors import CORS, cross_origin  
  
app = Flask(__name__)  
CORS(app, supports_credentials=True)  
  
@app.route('/')  
@cross_origin(origin='http://example.com', methods=['GET', 'POST'])  
def hello_world():  
    return jsonify({'message': 'Hello, World!'})  
  
if __name__ == '__main__':  
    app.run()

在上面的示例中,@cross_origin(origin='http://example.com', methods=['GET', 'POST'])为根路由设置了CORS策略。这表示来自http://example.com的GET或POST请求将被允许访问该路由。

你可以根据需要自定义originmethods参数,以指定允许的来源和方法。如果不指定origin参数,则默认为允许所有来源。如果不指定methods参数,则默认为允许所有方法。

通过使用@cross_origin()装饰器,你可以灵活地控制哪些跨域请求可以访问你的应用程序中的特定路由。

然后就可以通过啦!

标签:__,origin,跨域,python,app,cross,Flask,报错,CORS
From: https://www.cnblogs.com/fank-life/p/17705603.html

相关文章

  • python的字典错误:RuntimeError: dictionary changed size during iteration
    1.在字典遍历过程中修改字典元素,报错RuntimeError:dictionarychangedsizeduringiteration错误代码:foriinphone:i=int(i)forkeyindict_phone.keys():ifkey==i:print(dict_phone.pop(key,'ss')) 改正foriinphone:i......
  • Python并发编程——IO模型、阻塞IO、非阻塞IO、多路复用、异步IO、IO模型比较、select
    文章目录每日测验一IO模型介绍二阻塞IO(blockingIO)三非阻塞IO(non-blockingIO)四多路复用IO(IOmultiplexing)五异步IO(AsynchronousI/O)六IO模型比较分析七selectors模块网络并发知识点梳理网络并发知识点梳理每日测验简述死锁现象你用过哪些队列阐述进......
  • 《Python从入门到实战》-源码篇-Scrapy
    什么是Scrapy?Python写的开源爬虫框架,快速、简单的方式构建爬虫,从网站上提取你所需要的数据。优点:功能非常强大的爬虫框架,不仅能便捷地构建request,还有强大的selector能够方便地解析response,最受欢迎的还是它的性能,既抓取和解析的速度,它的downloader是多线程的,request是异步......
  • windows系统安装Python环境
    Python在此次AI浪潮中,被广泛使用,所以我们搭建一下Python的运行环境现在我安装的是Python1.10版本,没有使用最新版,是因为某些Python库不支持高版本Windows系统前往Python官网,直接下载安装程序https://www.python.org/downloads/windows/安装过程就是直接下一步,就能成功,记得勾选添......
  • Python爬虫如何使用代理IP进行抓取
    前言Python爬虫是一种非常强大的工具,可以用于抓取各种网站的数据。但是,在一些情况下,我们需要使用代理IP来完成数据抓取,如绕过IP限制或保护隐私信息等。本文将介绍如何使用Python爬虫抓取数据时使用代理IP,并提供示例代码和注意事项。一、什么是代理IP代理IP是一种充当客户端和服务器......
  • python中'\n'与'r'的区别和使用习惯
    在Python中,'\n'和'\r'是两个特殊的转义字符,它们用于控制字符串中的换行和回车行为。它们有不同的含义和用途:'\n'(换行符):'\n'表示换行,在字符串中使用它会将光标移动到下一行的行首。通常用于在文本中创建新的行或在输出中添加换行符,以使文本更易于阅读。示例:print("这是第一行\n这是......
  • DBeaver连接国产数据库OceanBase,以及Python连接,解决ModuleNotFoundError: No module n
    DBeaver连接OceanBase参考:https://www.modb.pro/db/365929用户名的格式为:数据库用户名@租户名#集群名 Python连接OceanBase参考:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000033288pip3installJayDeBeApi会自动下载JayDeBeApi和JPype1两个......
  • WSL 炼丹报错:Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so: c
    确认驱动没问题(nvidia-smi可以正常使用)解决办法参照:https://github.com/pytorch/pytorch/issues/85773#issuecomment-1288033297内容如下:......
  • 基于python+selenium的自动批量添加
    场景点击添加”新增“按钮,弹出”新增对话框“,输入各种数据,然后点击”确定“按钮,如此循环。数量多,这样操作累人。seleniumSelenium是一个用于自动化Web浏览器操作的库,可以实现模拟点击、输入文本等操作。代码实现#!/usr/bin/envpython3#-*-coding:utf-8-*-fromsel......
  • pip国内镜像源-Python安装第三方库
    众所周知,在没有配置第三方库的时候,使用pip或者conda安装包的时候,会直接指向Python官网,由于服务器在国外,下载速度会很慢,因此,大多数情况下会选择国内的镜像源网址来提升安装第三方库的速度。1.8个国内镜像源以下是中国常见的pip镜像源,按照完全度和下载速度排序,需要注意的是,镜像源......