gpt4 book ai didi

javascript - Python CGI 脚本拒绝包含数据 URI 的数据 (403)

转载 作者:行者123 更新时间:2023-12-03 07:55:27 25 4
gpt4 key购买 nike

我有一个使用 SVG 创建小图像的 Web 应用程序,我希望它能够将这些图像保存到服务器,然后再次加载它们(作为 SVG 元素的 innerHTML)。使用 ajax,我将 svg 的内部 HTML 发送到我的服务器端 Python 脚本,它看起来或多或少像这样:

#!/usr/bin/python
import cgi

data=cgi.FieldStorage()
filename=data.getfirst('filename')
svg=data.getfirst('svg')

f = open('/filepath/'+filename,'w')
f.write(svg)
f.close()

ajax 调用如下所示:

function savetoserver() {
var filename=$('#savename').val()
var svg = document.getElementById("svg_element").innerHTML

dictionary={'svg':svg,'filename':filename}

$.ajax({
url:'http://myserver.com/savetoserver.py',
type: 'post',
datatype: 'html',
data: dictionary,
success: function(response){
closedialog()
}
})
}

这对于简单的输入来说非常有用。但是,如果我的 SVG 中有任何类型的数据 URI,它将失败,并且脚本返回 403(禁止)。不幸的是,我有点想向它传递数据 URI。在某些情况下,小图像会放置在 SVG 内,而在几乎所有情况下,SVG 中都会嵌入字体作为 base64 数据 URI。

根据我从 Google 搜索中了解到的信息,这似乎是一个安全问题,旨在防止通过数据 URI 对服务器进行攻击。是否有一个标准的替代方案可供我使用,可以让我存储这些数据,而不会让 Python/Apache/任何感到不安的人感到不安?

最佳答案

我不太确定你的 svg 变量是什么样的(我猜测是“一些文本”+ URI)在任何情况下,您可能希望使用encodeURIComponent() 对 URI 中的特殊字符进行编码。

因此,您可以尝试将 svg 拆分为“文本部分”和“URI”部分(例如使用 split()),然后使用更新的字典在 ajax 请求中发送它,其中 svg 变量将类似于“some”文本'+encodeURIComponent('URI')

关于javascript - Python CGI 脚本拒绝包含数据 URI 的数据 (403),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com