相关疑难解决方法(0)

如何在python中规范化URL

我想知道我是否在python中规范化了一个URL.

例如,如果我有一个url字符串,如:" http://www.example.com/foo goo/bar.html"

我需要一个python中的库,它将额外的空间(或任何其他非规范化的字符)转换为正确的URL.

python url normalize normalization

70
推荐指数
5
解决办法
6万
查看次数

当签名具有"+"符号时,禁止使用Amazon S3 Python S3Boto 403

我正在使用Django,S3Boto并且只要签名中有'+'签名,我就会得到一个403 Forbidden.如果'+'签名中没有签名,我就可以获得资源.这可能有什么问题?

更新:

回购邮件位于:https://github.com/boto/boto

有关文件是:

boto/utils.py
boto/s3/connection.py
Run Code Online (Sandbox Code Playgroud)

注意: 我是Python的新手.我尝试修改代码,但仍然无法正确完成编码.

python django amazon-s3 boto amazon-web-services

6
推荐指数
1
解决办法
1795
查看次数

带有CORS文件上传的Amazon S3; s3upload.js的例子

我正在尝试设置一个Django应用程序以允许CORS上传到Amazon S3存储桶 - 运气不错.我一直在Firefox和Chrome上获得403 Forbidden消息,无论是在localhost还是从Web服务器.我已经验证我的签名正确计算(如下所述),我的存储桶策略是允许origin*,允许PUT/POST/GET方法,并允许标题*.我的访问密钥/密钥对是正确的,允许我通过Cyber​​duck等软件访问存储桶.我还能检查什么,或者我如何进一步调试?我觉得我已经探索了所有可能的途径

我正在尝试按照此演示,只需修改编码以匹配此SO问题.这允许我的签名与此Amazon S3测试文件匹配.我的签名生成代码在这里:

s3_bucket_name = settings.S3_BUCKET_NAME
s3_access_key = settings.S3_ACCESS_KEY
s3_secret_key = settings.S3_SECRET_KEY

object_name = request.GET.get('s3_object_name')
mime_type = request.GET.get('s3_object_type')

expires = int(time.time()+300)
amz_headers = "x-amz-acl:public-read"

put_request = "PUT\n\n%s\n%d\n%s\n/%s/%s" % (mime_type, expires, amz_headers, s3_bucket_name, object_name)

hashed = hmac.new(s3_secret_key, put_request, sha1)
signature = binascii.b2a_base64(hashed.digest())[:-1]
signature = urllib.quote_plus(signature.strip())

url = 'https://%s.s3.amazonaws.com/%s' % (s3_bucket_name, object_name)

signed_request = '%s?AWSAccessKeyId=%s&Expires=%d&Signature=%s' % (url, s3_access_key, expires, signature)

pdb.set_trace()

return HttpResponse(json.dumps({
    'signed_request': signed_request,
     'url': url
  }), mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

我的上传功能:

function s3_upload(filename) …
Run Code Online (Sandbox Code Playgroud)

django file-upload amazon-s3 cors

3
推荐指数
1
解决办法
1325
查看次数