閱讀282 返回首頁    go 阿裏雲


跨域資源共享__Java-SDK_SDK 參考_對象存儲 OSS-阿裏雲

跨域資源共享(CORS)允許web端的應用程序訪問不屬於本域的資源。OSS提供接口方便開發者控製跨域訪問的權限。更多關於跨域資源共享的內容請參考 跨域訪問

設定CORS規則

通過setBucketCors 方法將指定的存儲空間上設定一個跨域資源共享CORS的規則,如果原規則存在則覆蓋原規則。具體的規則主要通過CORSRule類來進行參數設置。代碼如下:

  1. SetBucketCORSRequest request = new SetBucketCORSRequest();
  2. request.setBucketName(bucketName);
  3. //CORS規則的容器,每個bucket最多允許10條規則
  4. ArrayList<CORSRule> putCorsRules = new ArrayList<CORSRule>();
  5. CORSRule corRule = new CORSRule();
  6. ArrayList<String> allowedOrigin = new ArrayList<String>();
  7. //指定允許跨域請求的來源
  8. allowedOrigin.add( "https://www.b.com");
  9. ArrayList<String> allowedMethod = new ArrayList<String>();
  10. //指定允許的跨域請求方法(GET/PUT/DELETE/POST/HEAD)
  11. allowedMethod.add("GET");
  12. ArrayList<String> allowedHeader = new ArrayList<String>();
  13. //控製在OPTIONS預取指令中Access-Control-Request-Headers頭中指定的header是否允許。
  14. allowedHeader.add("x-oss-test");
  15. ArrayList<String> exposedHeader = new ArrayList<String>();
  16. //指定允許用戶從應用程序中訪問的響應頭
  17. exposedHeader.add("x-oss-test1");
  18. corRule.setAllowedMethods(allowedMethod);
  19. corRule.setAllowedOrigins(allowedOrigin);
  20. corRule.setAllowedHeaders(allowedHeader);
  21. corRule.setExposeHeaders(exposedHeader);
  22. //指定瀏覽器對特定資源的預取(OPTIONS)請求返回結果的緩存時間,單位為秒。
  23. corRule.setMaxAgeSeconds(10);
  24. //最多允許10條規則
  25. putCorsRules.add(corRule);
  26. request.setCorsRules(putCorsRules);
  27. oss.setBucketCORS(request);

提示:

  • 每個存儲空間最多隻能使用10條規則。
  • AllowedOrigins和AllowedMethods都能夠最多支持一個”*”通配符。”*”表示對於所有的域來源或者操作都滿足。
  • 而AllowedHeaders和ExposeHeaders不支持通配符。

獲取CORS規則

我們可以參考存儲空間的CORS規則,通過GetBucketCors方法。代碼如下:

  1. ArrayList<CORSRule> corsRules;
  2. //獲得CORS規則列表
  3. corsRules = (ArrayList<CORSRule>) oss.getBucketCORSRules(bucketName);
  4. for (CORSRule rule : corsRules) {
  5. for (String allowedOrigin1 : rule.getAllowedOrigins()) {
  6. //獲得允許跨域請求源
  7. System.out.println(allowedOrigin1);
  8. }
  9. for (String allowedMethod1 : rule.getAllowedMethods()) {
  10. //獲得允許跨域請求方法
  11. System.out.println(allowedMethod1);
  12. }
  13. if (rule.getAllowedHeaders().size() > 0){
  14. for (String allowedHeader1 : rule.getAllowedHeaders()) {
  15. //獲得允許頭部列表
  16. System.out.println(allowedHeader1);
  17. }
  18. }
  19. if (rule.getExposeHeaders().size() > 0) {
  20. for (String exposeHeader : rule.getExposeHeaders()) {
  21. //獲得允許頭部
  22. System.out.println(exposeHeader);
  23. }
  24. }
  25. if ( null != rule.getMaxAgeSeconds()) {
  26. System.out.println(rule.getMaxAgeSeconds());
  27. }
  28. }

刪除CORS規則

用於關閉指定存儲空間對應的CORS並清空所有規則。

  1. // 清空bucket的CORS規則
  2. oss.deleteBucketCORSRules(bucketName);

最後更新:2016-11-23 16:58:16

  上一篇:go 生命周期管理__Java-SDK_SDK 參考_對象存儲 OSS-阿裏雲
  下一篇:go 設置訪問日誌__Java-SDK_SDK 參考_對象存儲 OSS-阿裏雲