YouTube v3 CORS 不考虑返回的“Access-Control-Allow-Origin”

2024-04-20

我有一个客户端和一个服务器。我的工作流程如下:

  1. 服务器使用 API v3 将片段上传到 youtube 并获取可恢复的 url (Youtube v3 API for resumable uploads -https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol)
  2. 该 url 从我的服务器发送到浏览器,浏览器发出 ajax PUT 请求,将实际文件上传到可恢复的 url。
  3. 这样文件就不会传输到服务器,而是直接从客户端上传。

结果我收到错误并且无法上传文件。

XMLHttpRequest cannot load https://www.googleapis.com/upload/youtube/v3/videos?key=mydevkeyanduploadid. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:3000' is therefore not allowed access. 

这是ajax请求:

var ajax = $.ajax({
    url: options.url,
    method: 'PUT',
    crossDomain:true,
    contentType: options.file.type,
    headers: {
        'Authorization': 'Bearer ' + options.accessToken,
        'Content-Range': 'bytes ' + options.start + '-' + (options.file.size - 1) + '/' + options.file.size
    },
    processData: false,
    data: options.file
});

浏览器发送一个 OPTIONS 请求,如下所示:

Remote Address:173.194.65.95:443
Request URL:https://www.googleapis.com/upload/youtube/v3/videos?key=mydevkey&part=snippet%2Cstatus&uploadType=resumable&upload_id=myuploadid
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6,pt;q=0.4,bg;q=0.2
Access-Control-Request-Headers:content-range, accept, authorization, content-type
Access-Control-Request-Method:PUT
Connection:keep-alive
Host:www.googleapis.com
Origin:http://localhost:3000
Referer:http://localhost:3000/episodes/0-do-you-know-your-enemy/preview
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Query String Parametersview sourceview URL encoded
key:mydevkey
part:snippet,status
uploadType:resumable
upload_id: myuploadit-this one is long
Response Headersview source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:content-range, accept, authorization, content-type
Access-Control-Allow-Methods:PUT
Access-Control-Allow-Origin:http://localhost:3000
Alternate-Protocol:443:quic,p=0.02
Content-Length:0
Content-Type:text/html; charset=UTF-8
Date:Sun, 11 Jan 2015 13:56:11 GMT
Server:UploadServer ("Built on Dec 19 2014 10:24:45 (1419013485)")

从这个回应我看到

Access-Control-Allow-Headers:content-range, accept, authorization, content-type
Access-Control-Allow-Methods:PUT
Access-Control-Allow-Origin:http://localhost:3000

我知道如果该请求来自,我可以向该网址发送 PUT 请求

http://localhost:3000

在 OPTIONS 请求之后,发出 PUT 请求:

Request URL:https://www.googleapis.com/upload/youtube/v3/videos?key=mydevkey&part=snippet%2Cstatus&uploadType=resumable&upload_id=myuploadid
Request Headers CAUTION: Provisional headers are shown.
Accept:*/*
Authorization:Bearer thishereistheaccesstoken
Content-Range:bytes 0-21234/21235
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:3000
Referer:http://localhost:3000/episodes/0-do-you-know-your-enemy/preview
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Query String Parametersview sourceview URL encoded
key:mydevkey
part:snippet,status
uploadType:resumable
upload_id:myuploadid

正如我们所看到的

Origin:http://localhost:30000

之所以出现,是因为这是发出 PUT 请求的来源。

但结果我确实有

XMLHttpRequest cannot load https://www.googleapis.com/upload/youtube/v3/videos?key=mydevkeyanduploadid. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:3000' is therefore not allowed access. 

为什么我会收到“请求的资源上不存在‘Access-Control-Allow-Origin’标头。”考虑到“Access-Control-Allow-Origin”实际上是从 OPTIONS 请求返回到服务器的?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YouTube v3 CORS 不考虑返回的“Access-Control-Allow-Origin” 的相关文章

  • Selenium 可以监控 XHR 请求吗

    Selenium 有什么方法可以监控来自应用程序的 XHR 请求 我想创建一个测试 其中测试单击按钮 然后检查是否发出了正确的 Ajax 请求 编辑 如果重要的话我正在使用 PHP Unit 您可以使用 Selenium 捕获网络流量 然后
  • Axios 与 Superagent

    如果我使用Axios https github com mzabriskie axios and 超级经纪人 https github com visionmedia superagent为了依次调用同一个 api 在这两种情况下 我都会首
  • 如何使用基于 Spring MVC 注解的 Portlet 控制器通过 AJAX 呈现 JSON 视图/响应?

    在过去的六个小时里 我在 Google 和 stackoverflow 上搜索了这个问题的答案 我最初是一名 PHP 开发人员 所以请耐心等待 从 PHP 控制器返回 JSON 数组非常简单 我正在使用 Spring MVC 3 0 我只想
  • jquery/javascript 处理后移至命名锚点

    在进行一些 jquery 处理后 如何将焦点移动到同一页面上的不同部分 名为锚点 函数 ABC 进行一些处理 然后 我需要将用户移动到同一页面上的某个部分 页面下方 您可以使用下面的代码将屏幕滚动到 div 只需更改选择器以匹配您要滚动到的
  • 向 FTP 服务器执行跨域 XMLHTTPREQUEST 的语法是什么?

    我有一个 webDav CORS 插件 可以使用它在 webDav 服务器上 POST PUT GET REMOVE ALLDOCS 文件 我现在想对 FTP 做同样的事情 但我正在努力获取xmlhttprequest 工作语法 我只是收到
  • 将 fetch 与 Content-Type 结合使用时出现 CORS 错误 [重复]

    这个问题在这里已经有答案了 我正在尝试从 FireFox 中的不同域向 REST Web 服务发送 POST 请求 我为此使用 JavaScript 获取 函数 我在 IIS 中托管 REST Web 服务 在我在 JavaScript 中
  • 作为数据流写入 div

    考虑写入 div 的 AJAX 调用 recent req post result php d data function returnData content html returnData PHP 脚本位于result php执行一些需
  • $.ajax(); 之间的区别和 $.ajaxSetup();

    有什么区别 ajax and ajaxSetup 在 jQuery 中如下 ajax cache false and ajaxSetup cache true 另外 哪一个是最好的选择 以下将阻止all无论您使用哪种 jQuery 方法 g
  • XMLHttpRequest、jQuery.ajax、jQuery.post、jQuery.get 之间有什么区别

    我如何找出最适合某种情况的方法 有人可以提供一些例子来了解功能和性能方面的差异吗 XMLHttpRequest是原始浏览器对象 jQuery 将其包装成更可用和简化的形式以及跨浏览器一致的功能 jQuery ajax是 jQuery 中的通
  • 您可以使用 JSONP 检索您的 Skype 状态吗?

    有谁知道使用 JSONP 获取 Skype 状态的 URL 到目前为止我只找到了一个 XML 状态 URL http mystatus skype com username xml 我正在尝试使用 AJAX 查询 Skype 是的 我可以使
  • IE 中带有“删除”方法的 jQuery.ajax 问题

    我有一个页面 用户可以使用按钮编辑各种内容并选择触发 ajax 调用 特别是 一个操作会导致远程调用一个 url 其中包含一些数据和 放置 请求 这 因为我使用的是宁静的 Rails 后端 会触发我的更新操作 我还有一个删除按钮 它调用相同
  • Javascript/jQuery 变量未给出预期值

    和我之前的其他人一样 我也在 Javascript 的范围内苦苦挣扎 那并试图阅读该死的东西 我已经检查了关于这个问题的一些先前的线程 但我似乎无法让它们正确地应用于我的问题 在下面的示例中 我想操纵中的值tagsArr数组 一旦数组已完全
  • 更改模板标签 <# {% {{ 等后,John Resig 的微模板出现语法错误

    我在使用 John Resig 的 Micro 模板时遇到了一些麻烦 谁能帮我解释为什么它不起作用 这是模板 以及发动机的改装部分 str replace r t n g split join t replace gt t g 1 r re
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste
  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m
  • 将数组从 javascript 传递到控制器 MVC 4

    我正在使用剃刀 但很难将数组传递给控制器 该数组包含我制作的对象 我正在尝试执行此操作 ajax type POST url HomePage HandleOperations data JSON stringify operationCo
  • 如何使用 PHP 中的 jQuery/AJAX 调用迭代 JSON 数组? [复制]

    这个问题在这里已经有答案了 可能的重复 循环Json对象 https stackoverflow com questions 684672 loop through json object 我有一个 PHP 函数 data php 它从外部
  • S3 不返回 Access-Control-Allow-Origin 标头?

    我无法强制 S3 在从存储桶返回的所有对象上设置 CORS 标头 尽管启用了 CORS 但由于客户端 S3 上传正在工作 返回的对象没有 CORS 标头 我启用的策略是
  • 上传进度条 Java Servlet?

    我想使用 servlet 显示上传进度条 我尝试过Ajax iFrame 技术 页面没有重新加载 文件也被上传 但是 进度条没有出现 有没有可用于 javaservlts 的 jQuery 进度插件 Thanks 我强烈推荐jQuery 上

随机推荐