为什么我的Flask应用程序不接受base64字符串的发布请求,但在本地主机上工作?

您所在的位置:网站首页 flask接受文件 为什么我的Flask应用程序不接受base64字符串的发布请求,但在本地主机上工作?

为什么我的Flask应用程序不接受base64字符串的发布请求,但在本地主机上工作?

2023-04-09 00:46| 来源: 网络整理| 查看: 265

推荐答案1

您的烧瓶应用程序不接受base64字符串的帖子请求可能有几个原因.以下是一些可能的原因:

1. CORS:如果您的烧瓶应用程序托管在一个与提出邮政请求的域不同的域上,则您可能需要启用交叉原始资源共享(CORS)以允许请求通过.您可以使用烧瓶 - 凸台扩展名来启用烧瓶应用中的COR.

2.防火墙或网络问题:如果您的烧瓶应用程序托管在防火墙后面的服务器或具有严格安全策略的网络上,则可能会阻止邮政请求.您可能需要检查防火墙或网络设置,以确保允许请求.

3.尺寸限制:如果在邮政请求中发送的基本64字符串太大,则可能超过烧瓶应用程序或Web服务器设置的最大请求尺寸限制.您可能需要增加最大请求尺寸限制以允许请求通过.

4.编码问题:如果在邮政请求中发送的base64字符串包含未正确编码的字符,则可能会导致请求问题.您可能需要确保将字符串正确编码,然后再在请求中发送.

5.代码问题:烧瓶应用程序中的代码可能会导致其拒绝邮政请求.您可能需要查看您的代码,以确保其正确处理请求和可能发生的任何错误.

也值得注意的是,邮政请求可行的事实在Localhost上,但在远程服务器上没有表明该问题可能与网络或服务器配置有关,而不是代码本身.

推荐答案2

您的烧瓶应用程序是否正在寻找base64字符串作为发布请求的参数? (必须"接受"它.)

推荐答案3

没有更多信息,很难准确地说出原因是什么原因.但是,以下是您的烧瓶应用程序可能无法接受base64字符串的邮政请求的一些可能原因:

交叉孔资源共享(CORS)问题:如果您的烧瓶应用程序托管在一个与提出邮政请求的范围不同的域上,则可能是您的应用程序正在阻止由于CORS问题而阻止请求.在这种情况下,您可以尝试通过安装烧瓶仪扩展名并适当配置烧瓶应用程序中的CORS. 防火墙或网络问题:请求被防火墙或网络配置问题阻止.检查服务器上的防火墙设置是否没有阻止传入的发布请求. 错误的数据编码不正确:base64编码的字符串可以包含在URL中不有效的字符,并且这些字符可能需要以特定方式对字符进行编码或解码,以确保正确处理POST请求.检查客户端和服务器之间的数据编码是否一致. 服务器配置问题:可能是服务器上托管烧瓶应用程序上的配置问题可以阻止它通过正确处理帖子请求.检查服务器是否正确配置为处理传入的发布请求.

在任何情况下,正确处理烧瓶应用中的错误和例外很重要,以帮助识别识别问题的具体原因.您可以将错误处理路线添加到烧瓶应用程序以帮助解决此路线,并使用日志记录跟踪可能出现的任何问题.

推荐答案4

使用 python框架,我已经收到了很多与"处理多个客户端"有关的请求.在这种情况下,是烧瓶.再一次,我残酷的简短答案是 - 您没有.

Web Frameworks旨在一次支持大量用户.几乎必须以任何框架以一种让许多人一次访问您的网站的方式构建任何框架,但这是一种误导 - 并不是那么多框架,可以为您提供为多个用户提供服务的工作. WSGI服务器. Django通常与Gunicorn结合使用,这项任务是将您的应用程序分配给并发用户.

现在,如果您想知道在为大量用户提供服务有一次,我建议您研究分布式系统.您需要一个负载平衡器才能使运行网站的多个服务器均匀地分发了负载,以使一台服务器不会被固定下来.您可以使用网站的几乎每个组件来执行此操作 - 仅获取专用服务器的数据库,然后将其加载到其他地方,开始使用redis或memcache的东西开始缓存通常访问的对象,获取其他服务器来托管媒体文件或使用像云一样的服务来存储它们.

我不记得我在哪里阅读了这篇文章,但是当我自己研究这个话题时,我偶然发现了这句话 -

性能调整都比科学更重要.

真实的单词haven'被说.

推荐答案5

首先,我建议您通过此答案,您将了解base64的目的. Rajesh Prajapati's answer to What is the purpose of base64 encoding, why not just use binary?

现在让我们深入研究base64编码的工作方式.

要注意的点:字符串的长度应应位于3的多个.

示例1:

要编码的字符串:" ace",长度= 3

1)将每个字符转换为十进制.

a = 97,c = 99,e = 101

2)将每个小数点更改为8位二进制表示.

97 = 01100001,99 = 01100011,10111,101 = 01100101

组合:01100001 01100011 01100111

3)在一组6位中分开.

011000 010110 001101 100101

4)计算二进制于十进制

011000 = 24, 010110 = 22,001101 = 13,100101 = 37

5)使用base64图表到base64 covert小数. 24 = y,22 = w,13 = n,37 = l

" ace" =>" ywnl"

示例2:

要编码的字符串:" abcd"长度= 4,它不是3的倍数.添加2个位填充以使长度=6.填充位由" ="符号表示.

要注意的点:一个填充位等于两个零00,所以两个填充位点等于四个零0000.

,让我们开始过程: -

1)将每个字符转换为十进制.跨度>

a = 97,b = 98,c = 99,d = 100

2)将每个小数点更改为8位二进制表示.

97 = 01100001,98 = 01100010,99 = 01100011,100 = 01100100

3)在一组6位.

011000、010110、001001、100011、011001、0011001、00

-bit尚未完成,因此我们插入两个填充位,等于四个零" 0000".

011000,010110,001001,100011,011001,000000 ==

现在,它相等.最后两个等于符号表明添加了4个零(有助于解码).

4)将二进制计算为十进制.

011000 = 24,010110 = 22,001001 = 9,100011 = 35,011001 = 25,000000 = 0 ==

5)covert covert covert covert to Base64使用使用base64图表.

24 = y,22 = w,9 = j,35 = j,25 = z,0 = a ==

" abcd" =>" ywjjza =="



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3