Does https://www.googleapis.com/upload/drive/v2/files really support CORS?

后端 未结 3 808
名媛妹妹
名媛妹妹 2020-12-11 22:22

Update: This is a bug in GoogleDrive, CORS is not enabled for upload URIs. @Nivco pointed me to a work around with Google\'s client library which uses an i

3条回答
  •  囚心锁ツ
    2020-12-11 22:57

    This answer (and in fact the question itself) is now redundant given full CORS support as confirmed by Steve Bazyl

    Working code, using @Nivco's help, along with detailed explanation:

    Here is the working code for a full test of this technique. To use this, you need to make two pages. The first page authenticates and launches the second page, which is your actual app. In order to be able to access the Google Drive API to upload a file, you need to register an app, which is described here.

    Your first page will use OAuth, which is described in this Stackoverflow answer. It calls your app with a fragment that looks like this:

    #access_token=ya29.AHES6ZSb4M4ju8U_X_zgFrz_MD2RsjrQu5V05HjsBtrCl0nh2SrnaA&token_type=Bearer&expires_in=3600
    

    In JavaScript, you can access that fragment with location.hash. After you save the value, it's a good idea to set location.hash to the empty string right away, so that it doesn't show up in the browser's location bar. Your app needs to use the value of access_token from the fragment in its CORS requests and also in the proxied (non-CORS) request to the upload API. Here is an example launch page, which is really just a version of the code from OAuth example:

    
      
        Authorize Leisure Storage

    Here is an example app that uploads a\na\b\n to a file called leisureUpload in your GoogleDrive, using Google's Client Library for JavaScript. There is no need to use any of the gapi.auth methods, because it uses a raw gapi.client.request() call with the Authorization header directly in the call, just like it would with xmlHttpRequest() using CORS:

    
    
      
        
        Leisure
        
        
      
      
        

    Welcome to Leisure!


    
      
    
    

提交回复
热议问题