{"id":102282,"date":"2021-08-05T08:56:06","date_gmt":"2021-08-05T15:56:06","guid":{"rendered":"https:\/\/www.backblaze.com\/blog\/?p=102282"},"modified":"2022-07-14T17:06:33","modified_gmt":"2022-07-15T00:06:33","slug":"cors-correction-developer-insight-on-the-backblaze-b2-command-line","status":"publish","type":"post","link":"https:\/\/www.backblaze.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/","title":{"rendered":"CORS Correction: Developer Insight on the Backblaze B2 Command Line"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-102285\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg\" alt=\"\" width=\"1440\" height=\"820\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg 1440w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera-300x171.jpg 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera-1024x583.jpg 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera-768x437.jpg 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera-560x319.jpg 560w\" sizes=\"auto, (max-width: 1440px) 100vw, 1440px\" \/><\/p>\n<div class=\"abstract\" style=\"line-height: 1.8; margin: 24px 12px; padding: 24px 12px 10px 12px;\">We recently spoke with Kristian Kielhofner, a developer and entrepreneur who&#8217;s on his third go-round as a startup founder and CEO after two very successful exits. He\u2019s built a next-gen, crypto-centric media asset management platform, Tovera, which launched two days ago.<\/p>\n<p>Developer customers are regularly choosing Backblaze B2 as the cloud storage platform that sits under their products and services. We feel lucky to learn about the innovations they are bringing to this world. Kristian found a clearer path to setting up CORS for B2 Cloud Storage and Cloudflare, so we asked him to share why he started Tovera, how he thought through his cloud storage options, and the exact steps he took to go live with his solution.\u2014Backblaze<\/p>\n<\/div>\n<h2><strong>The Tovera Backstory: Fighting Deepfakes<\/strong><\/h2>\n<p>One morning, <a href=\"https:\/\/apnews.com\/article\/pennsylvania-doylestown-cheerleading-0953a60ab3e3452b87753e81e0e77d7f\" target=\"_blank\" rel=\"noopener\">this<\/a> story really caught my attention.<\/p>\n<p>Like many technology enthusiasts, I\u2019m familiar with <a href=\"https:\/\/en.wikipedia.org\/wiki\/Deepfake\" target=\"_blank\" rel=\"noopener\">deepfakes<\/a>. That said, the \u201cPennsylvania Cheerleading Mom\u201d story told me something: As we\u2019ve seen time and time again, technology rapidly evolves beyond its original intended use. Sometimes for our benefit, and (unfortunately) sometimes not so much&#8230;<\/p>\n<p>I realized it would only be a matter of time before this incredibly powerful technology would be in the hands of everyone\u2014for uses good or evil. With more research, I found that (not surprisingly) the current approach to stopping misuse of the technology utilizes the same fundamental machine learning approaches powering the deepfakes themselves. It seems that what we now have is a machine learning arms race: a new model to generate deepfakes, a <a href=\"https:\/\/blogs.microsoft.com\/on-the-issues\/2020\/09\/01\/disinformation-deepfakes-newsguard-video-authenticator\/\" target=\"_blank\" rel=\"noopener\">new model to detect them<\/a>. Around and around we go.<\/p>\n<p>I began thinking of approaching the deepfake problem from the other side of the coin. What if, instead of using machine learning to guess what is fake, we prove what is real? Deepfake detection models can\u2019t provide 100% certainty today (or ever), but cryptographic authentication can. This simple idea was the genesis for <a href=\"https:\/\/tovera.com\/\" target=\"_blank\" rel=\"noopener\">Tovera<\/a>.<\/p>\n<h3><strong>What Does Tovera Do?<\/strong><\/h3>\n<p>Tovera takes digital media you upload and uses existing cryptography and emerging blockchain technology to create a 100% secure validation record. When published on our platform, we can confirm (with 100% certainty) that your digital media assets are yours and haven&#8217;t been tampered with.<\/p>\n<figure id=\"attachment_102294\" aria-describedby=\"caption-attachment-102294\" style=\"width: 1024px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-102294\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2021\/08\/image4-1024x484.png\" alt=\"\" width=\"1024\" height=\"484\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image4-1024x484.png 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image4-300x142.png 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image4-768x363.png 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image4-1536x727.png 1536w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image4-560x265.png 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image4.png 1814w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-102294\" class=\"wp-caption-text\">Tovera asset upload and management page.<\/figcaption><\/figure>\n<p>After working through the initial proof of concept, I had another revelation: \u201cHey, while we\u2019re hitting our API whenever and wherever digital media is viewed, why don\u2019t we return some extra stuff?\u201d Now, not only can our users validate that their content is really theirs and hasn\u2019t been modified, they can use the features provided by Tovera Publish to dynamically update their released digital content from our dashboard. With Tovera, any changes you make to your digital media and online presence are updated across social media platforms, websites, and devices globally\u2014instantly.<\/p>\n<figure id=\"attachment_102295\" aria-describedby=\"caption-attachment-102295\" style=\"width: 1024px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-102295\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2021\/08\/image3-1024x641.png\" alt=\"\" width=\"1024\" height=\"641\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image3-1024x641.png 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image3-300x188.png 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image3-768x481.png 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image3-1536x962.png 1536w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image3-560x351.png 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image3.png 1762w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-102295\" class=\"wp-caption-text\">An image served via Tovera, with authentication dropdown.<\/figcaption><\/figure>\n<p>In keeping with our mission of ensuring everyone can protect, validate, and control their online presence, we provide this technology for free with a simple sign up and onboarding process.<\/p>\n<h2><strong>The Tovera Storage Journey<\/strong><\/h2>\n<p>To provide this service, we needed to host the digital media files somewhere. Of course, you have your go-to juggernauts\u2014Amazon, Google, and Microsoft. The problem is Tovera is a tiny startup. Having some prior startup experience, I know that spending your money and time wisely from the beginning is one of the most important things you can do.<\/p>\n<p>I took one look at pricing from the \u201cbig three\u201d cloud providers through the lens of someone who has experience buying bandwidth and storage (long story) and I thought, \u201cWow, this is a good business.\u201d As has been covered on <a href=\"\/blog\/backblaze-and-cloudflare-partner-to-provide-free-data-transfer\/\" target=\"_blank\" rel=\"noopener\">this blog<\/a> and <a href=\"https:\/\/www.cloudflare.com\/bandwidth-alliance\/\" target=\"_blank\" rel=\"noopener\">elsewhere<\/a>, the storage and (especially) bandwidth markups from the big providers is, to put it mildly, significant.<\/p>\n<p>Like some of you, I\u2019ve also been a fan of Backblaze for a long time. Since it was announced, I\u2019ve kept an eye on their B2 Cloud Storage product. So, one morning I took it upon myself to give Backblaze B2 a try.<\/p>\n<p>Sign up and initial onboarding couldn\u2019t have been easier. I found myself in the Backblaze B2 user dashboard up and running in no time. <a href=\"https:\/\/help.backblaze.com\/hc\/en-us\/articles\/360052129034-Creating-and-Managing-Application-Keys\" target=\"_blank\" rel=\"noopener\">Creating application keys<\/a> for my purposes was also extremely easy.<\/p>\n<p>After deciding B2 Cloud Storage would work in theory, I decided to try it out in practice. As I integrated the service into Tovera, I ran into a few different vexing issues. I thought other devs might be able to benefit from my CORS troubleshooting, and so I\u2019m outlining my experience here.<\/p>\n<h3><strong>Checking the Backblaze S3 Compatible API<\/strong><\/h3>\n<p>We make it simple for our users to upload their assets directly to our cloud storage provider. Because B2 Cloud Storage has the Backblaze S3 Compatible API, the use of presigned URLs fits the bill. This way, Tovera users can upload their digital media assets directly to Backblaze, securely, and make them available to the world via our platform.<\/p>\n<p>In case you\u2019re not familiar with the presigned URL process, the overall flow looks something like the structure laid out in <a href=\"https:\/\/medium.com\/@heshamaothman\/upload-and-retrieve-files-form-aws-s3-using-the-presigned-url-pattern-in-java-ecde26e9441f\" target=\"_blank\" rel=\"noopener\">this blog post<\/a>.<\/p>\n<p>After perusing the available documentation, I started off with the following Node.js Javascript code:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-102296\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2021\/08\/Node.js-Javascript-code-1024x986.png\" alt=\"\" width=\"1024\" height=\"986\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Node.js-Javascript-code-1024x986.png 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Node.js-Javascript-code-300x289.png 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Node.js-Javascript-code-768x740.png 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Node.js-Javascript-code-560x539.png 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Node.js-Javascript-code.png 1138w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>With this Javascript function, Tovera API services provide a URL for our user dashboard to instantly (and securely) upload their assets to our Backblaze account. I had read Backblaze B2 has a 100% Amazon S3 Compatible API but I was a little skeptical. Is this really going to work? Sure enough, it worked on the first attempt!<\/p>\n<h3><strong>Integrating Cloudflare and Setting Up CORS<\/strong><\/h3>\n<p>Between the Bandwidth Alliance and having dealt with DDoS attacks and shady internet stuff in general before, I\u2019m also a big fan of <a href=\"https:\/\/www.cloudflare.com\/\" target=\"_blank\" rel=\"noopener\">Cloudflare<\/a>. Fortunately, Backblaze provides <a href=\"https:\/\/help.backblaze.com\/hc\/en-us\/articles\/217666928-Using-Backblaze-B2-with-the-Cloudflare-CDN\" target=\"_blank\" rel=\"noopener\">guidance<\/a> on how to best use B2 Cloud Storage with Cloudflare to make use of their combined power.<\/p>\n<p>Once I set up Cloudflare to work with B2 Cloud Storage and the Tovera API services were returning valid, presigned URLs for clients to do a direct HTTP PUT, I tried it out in our Next.js-powered user dashboard.<\/p>\n<p>Uh-oh. Dreaded CORS errors. I\u2019ll spare you the details, but here\u2019s where things get interesting\u2026 I don\u2019t know about you, but CORS can be a little frustrating. LONG story short, I dug in deep, feeling a little like I was wandering around a dark room looking for the light switch.<\/p>\n<p>After fumbling around a bit, I was able to piece together the following with the <a href=\"https:\/\/www.backblaze.com\/b2\/docs\/quick_command_line.html\" target=\"_blank\" rel=\"noopener\">Backblaze B2 command line utility<\/a>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-102297\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2021\/08\/Backblaze-B2-Command-Line-Utility-1024x681.png\" alt=\"\" width=\"1024\" height=\"681\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Backblaze-B2-Command-Line-Utility-1024x681.png 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Backblaze-B2-Command-Line-Utility-300x200.png 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Backblaze-B2-Command-Line-Utility-768x511.png 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Backblaze-B2-Command-Line-Utility-560x373.png 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/Backblaze-B2-Command-Line-Utility.png 1112w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>With this usage of the Backblaze B2 command line utility, we\u2019re setting the following CORS rules on our bucket:<\/p>\n<ul>\n<li>Allow users to download Backblaze B2 files from anywhere using the native B2 Cloud Storage interfaces.<\/li>\n<li>Allow users to use the Backblaze S3 Compatible API to download and upload their files from anywhere with the authenticated presigned URL provided by the server side Javascript function above.<\/li>\n<\/ul>\n<p>With these rules, Tovera users can use our embeddable verification links across any site they provide them to\u2014existing websites, social media networks, and more. In other applications you may want to limit these CORS rules to what makes sense for your use case.<\/p>\n<h2><strong>Focusing on What\u2019s Important<\/strong><\/h2>\n<p>With Backblaze B2, we at Tovera can focus on our mission of putting our digital media security, validation, and publishing functionality in the hands of as many people as possible. Tovera users can take back control of their online presence and address the many threats posed by deepfake technologies that threaten their likeness, reputation, and brand.<\/p>\n<hr \/>\n<style>\n      .container {<br \/>\n        display: flex;<br \/>\n        align-items: center;<br \/>\n        justify-content: center<br \/>\n      }<br \/>\n      .image {<br \/>\n        flex-basis: 40%<br \/>\n      }<br \/>\n      .text {<br \/>\n        font-size: 14px;<br \/>\n        padding-left: 20px;<br \/>\n      }<br \/>\n    <\/style>\n<p>&nbsp;<\/p>\n<div class=\"container\">\n<div class=\"image\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-102289\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2021\/08\/image2-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image2-150x150.png 150w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image2-300x300.png 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image2-768x768.png 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image2-80x80.png 80w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image2-560x560.png 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/image2.png 800w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/div>\n<div class=\"text\">\n<p>Kristian Kielhofner works on overall technical architecture, vision, and strategy for Tovera when he&#8217;s not out buying yet another whiteboard to scribble on. Kristian previously built, grew, and exited Star2Star Communications\u2014a leading provider of business productivity solutions.<\/p>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Read about how the crypto-centric media asset management platform, Tovera, set up CORS for Backblaze B2 Cloud Storage and Cloudflare.<\/p>\n","protected":false},"author":157,"featured_media":102285,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[7],"tags":[468],"class_list":["post-102282","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-storage","tag-b2cloud","entry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CORS Correction: Developer Insight on the Backblaze B2 Command Line<\/title>\n<meta name=\"description\" content=\"Tovera is a media asset management platform that creates media validation with crypto. How did Tovera use Backblaze B2 as its cloud storage platform of choice?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.backblaze.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CORS Correction: Developer Insight on the Backblaze B2 Command Line\" \/>\n<meta property=\"og:description\" content=\"Tovera is a media asset management platform that creates media validation with crypto. How did Tovera use Backblaze B2 as its cloud storage platform of choice?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/\" \/>\n<meta property=\"og:site_name\" content=\"Backblaze Blog | Cloud Storage &amp; Cloud Backup\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/backblaze\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-05T15:56:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-15T00:06:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"820\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Milk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@backblaze\" \/>\n<meta name=\"twitter:site\" content=\"@backblaze\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Milk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CORS Correction: Developer Insight on the Backblaze B2 Command Line","description":"Tovera is a media asset management platform that creates media validation with crypto. How did Tovera use Backblaze B2 as its cloud storage platform of choice?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.backblaze.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/","og_locale":"en_US","og_type":"article","og_title":"CORS Correction: Developer Insight on the Backblaze B2 Command Line","og_description":"Tovera is a media asset management platform that creates media validation with crypto. How did Tovera use Backblaze B2 as its cloud storage platform of choice?","og_url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/","og_site_name":"Backblaze Blog | Cloud Storage &amp; Cloud Backup","article_publisher":"https:\/\/www.facebook.com\/backblaze","article_published_time":"2021-08-05T15:56:06+00:00","article_modified_time":"2022-07-15T00:06:33+00:00","og_image":[{"width":1440,"height":820,"url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg","type":"image\/jpeg"}],"author":"Jeremy Milk","twitter_card":"summary_large_image","twitter_creator":"@backblaze","twitter_site":"@backblaze","twitter_misc":{"Written by":"Jeremy Milk","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#article","isPartOf":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/"},"author":{"name":"Jeremy Milk","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/37a379303af13f87deb643d2c512675c"},"headline":"CORS Correction: Developer Insight on the Backblaze B2 Command Line","datePublished":"2021-08-05T15:56:06+00:00","dateModified":"2022-07-15T00:06:33+00:00","mainEntityOfPage":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/"},"wordCount":1323,"commentCount":0,"publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"image":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg","keywords":["B2Cloud"],"articleSection":["Cloud Storage"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/","name":"CORS Correction: Developer Insight on the Backblaze B2 Command Line","isPartOf":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#primaryimage"},"image":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg","datePublished":"2021-08-05T15:56:06+00:00","dateModified":"2022-07-15T00:06:33+00:00","description":"Tovera is a media asset management platform that creates media validation with crypto. How did Tovera use Backblaze B2 as its cloud storage platform of choice?","breadcrumb":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#primaryimage","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg","width":1440,"height":820},{"@type":"BreadcrumbList","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/cors-correction-developer-insight-on-the-backblaze-b2-command-line\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CORS Correction: Developer Insight on the Backblaze B2 Command Line"}]},{"@type":"WebSite","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","name":"Backblaze Cloud Solutions Blog","description":"Cloud Storage &amp; Cloud Backup","publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization","name":"Backblaze","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Backblaze"},"image":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/backblaze","https:\/\/x.com\/backblaze","https:\/\/www.youtube.com\/user\/Backblaze","https:\/\/en.wikipedia.org\/wiki\/Backblaze"]},{"@type":"Person","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/37a379303af13f87deb643d2c512675c","name":"Jeremy Milk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2020\/10\/IMG_20200218_083152-150x150.jpg","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2020\/10\/IMG_20200218_083152-150x150.jpg","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2020\/10\/IMG_20200218_083152-150x150.jpg","caption":"Jeremy Milk"},"description":"Jeremy Milk is a storybuilder who heads the Backblaze Product Marketing team. He's spent more than two decades honing his craft in product and consumer goods marketing leadership roles at companies including Intuit, WePay (acquired by JPMorgan Chase), and The Clorox Company. Outside the office, he can often be found near a soccer field, on a running trail, or fueling on coffee and tacos. Follow him on LinkedIn or Twitter.","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/author\/jeremy\/"}]}},"jetpack_featured_media_url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2021\/08\/bb-bh-BBTovera.jpg","_links":{"self":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/102282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/users\/157"}],"replies":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/comments?post=102282"}],"version-history":[{"count":0,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/102282\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media\/102285"}],"wp:attachment":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media?parent=102282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/categories?post=102282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/tags?post=102282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}