问题一:前端跨域请求
问题描述
我们希望在前端中使用put请求直接将图片上传到OSS(即Client直接与OSS通信,不经过Server),但是遇到CORS问题:
前端代码如下:
var formData = new FormData(); formData.append("init_img", $("#initImg")[0].files[0]); $.ajax({ url: upload_signurl, type: 'put', data: formData, contentType: false, cache: false, async: false, crossDomain: true, processData: false, success: function(result) { console.log('upload sucess!') }, error: function(re) { console.log('upload failed!') } })
期望结果
由于业务逻辑的问题,我们不希望使用代理。因为:
- 代理仍然会产生Client到ProxyServer的数据流,ProxyServer再转发到OSS,而不是直接从Client上传到OSS
- 对于前后端未分离的框架,我们很难使用nginx进行代理,只能在后端增加相应接口
已尝试的方法
尝试在sign_url的时候添加头部信息:
headers = dict() headers['x-oss-ac-forward-allow'] = True headers['Access-Control-Allow-Origin'] = '*' headers['Access-Control-Allow-Credentials'] = True self.bucket.sign_url(method, key, OSS.expire_time_seconds[method], headers=headers)
但仍然会出现CORS
因为这是PUT方法,也无法使用jsonp的方式
因为这是Flask项目,也很难使用中间代理
是不是需要服务器(OSS)端添加响应头?
参考回答:
请参考文档设置跨域资源共享(CORS)准备工作中“设置跨域资源共享CORS”部分配置跨域规则。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502574
问题二:将OSS URL文件放在H5项目的iframe中,使用浏览器访问正常,如果使用webview将H5嵌入到App中,预览页面为空
将OSS URL文件放在H5项目的iframe中,使用浏览器访问正常,如果使用webview将H5嵌入到App中,预览页面为空。
参考回答:
将OSS URL 文件放在 H5 项目的 iframe 中,在浏览器中访问正常,但是在 App 中使用 WebView 嵌入 H5,预览页面为空,可能有以下原因:
- 跨域问题:浏览器和 App 都有同源策略,如果 iframe 中加载的资源与主文档不在同一源下,就会面临跨域限制。这时候需要通过设置相应的 HTTP 头部信息或者使用 JSONP 等方式进行解决。
- 安全策略问题:App 中 WebView 需要遵循其自身的安全策略,防止恶意网站攻击用户设备。可能存在某些安全策略导致了该问题,例如 iOS 的 ATS(App Transport Security)策略限制等。
- 网络连接问题:在 App 中 WebView 加载网络资源时,可能会出现网络连接异常等问题。建议检查网络连接状态,并尝试在其他网络环境中测试 App 的 WebView 是否能够正常加载资源。
- 操作系统版本问题:WebView 在不同操作系统版本中支持的特性也不一样,如果您的 App 运行在较老的 Android 或 iOS 版本上,可能会存在兼容性问题。建议升级您的操作系统版本或者使用更稳定的 WebView 库。
综上所述,建议对 WebView 进行详细调试,利用 WebView 提供的开发工具进行查看错误日志,并在代码中增加相关调试信息,帮助您快速定位问题所在。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502419
问题三:OSS SDK .net 使用下载例程报错
问题描述
...使用client.PutObject可以上传,但是使用clientGetObject下载时报错.
期望结果
...协助排查问题
已尝试的方法
...
参考回答:
你好,请问在GetObject 时具体的报错信息有吗?另外请您检查下:
- accesskey 是否是Ram账号的key,并且对oss 有读写权限,根据您描述的情况写应该是没问题 ,那么轻检查下这个key是否缺少读权限
- 请到oss中检查您上传的对象是否已经存在
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502278
问题四:oss创建adb mysql3.0的外表空值怎么处理
oss创建adb mysql3.0的外表空值怎么处理
参考回答:
在OSS中创建ADB MySQL 3.0的外表时,可以使用NULL
值来处理空值。在创建外表时,需要指定列的数据类型和允许的空值。例如,如果有一个名为age
的列,数据类型为INTEGER
,则可以这样定义:
CREATE TABLE my_table ( id INT PRIMARY KEY, name VARCHAR(255), age INTEGER NULL );
在这个例子中,age
列允许存储NULL
值。当插入或更新数据时,如果age
列为空,那么它将被存储为NULL
。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/562671
问题五:oosfs挂盘后,打开挂盘目录 ls长时间不显示,然后报错
问题描述
.oosfs挂盘后,打开挂盘目录 ls长时间不显示,然后报错
期望结果
显示挂盘的文件及目录
已尝试的方法
卸载重试,重新挂载
参考回答:
建议打开ossfs的debug日志,自行排查是否有报错信息。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502216