是否可以在 Javascript 中发出跨域请求并设置自定义标头?

2023-11-25

由于您无法在 JSONP 调用上应用自定义标头,如何使用 jQuery 发出跨域请求并应用自定义标头?

我基本上尝试使用 jQuery 访问 google 文档,并且需要传递身份验证令牌:

var token = "my-auth-token";
$.ajax({
  url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
  dataType: 'json',
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
  },
  success: function(data, textStatus, XMLHttpRequest) {
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
  }
});

注:这样做的目的是完全地绕过应用层。使用 ruby​​ 连接 Google Data API 很简单,但在服务器端解析 feed 时始终会占用大量资源。


您可以使用 Google 的 JavaScript 客户端库来查询 Docs API。尽管它没有专门针对文档提供帮助程序,但它仍然可以与大多数 API 一起使用,包括文档。看到这个博客文章由 Google 员工编写,展示了一个工作示例。

如果您最终陷入授权的无限循环,请参阅此相关问题来自 Google 群组。基本上,cookie 的设置速度不够快,因此当 JavaScript 客户端库检查时,它找不到任何内容并重定向到 OAuth 授权页面。解决方案是在检查完成之前添加一个小的延迟,或者使用启动授权的登录按钮,而不是在页面加载时进行授权。

您还需要将位于同一域的任何图像添加到您的页面。可以用CSS隐藏,只要在DOM中即可。

使用上面博客文章中的示例,我能够仅使用 JavaScript 检索我的文档列表。这是我用来摆脱无限授权循环的修改后的初始化函数:

function initialize() {
    var scope = 'http://docs.google.com/feeds/';

    if (google.accounts.user.checkLogin(scope)) {
        var service = new google.gdata.client.GoogleService('writely', 'DocList-App-v1.0');   
        service.getFeed(scope + 'documents/private/full/', handleFeed, handleError);  
    } else {
        var loginButton = $("<button>Click here to login</button>");
        loginButton.click(function() {
            var token = google.accounts.user.login(scope); // can ignore returned token  
        });
        $("body").append(loginButton);
    }
};  
​
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 Javascript 中发出跨域请求并设置自定义标头? 的相关文章

  • 如何在 Windows 网络中的 Intranet Web 应用程序中获取用户的用户名

    我内部有一个简单的 HTML 页面 它只显示一个表单并要求用户填写 我想自动捕获Windows域用户名和机器名 并将其与表单中收集的数据一起提交 我可以在客户端这样做吗 HTML JavaScript 或者我被迫在服务器端执行此操作 我还不
  • 我可以使用 jQuery 的 AJAX 将表单信息提交到 Google Spreadsheets 吗?

    我喜欢能够使用谷歌电子表格 但以视觉方式集成到我的网站中很棘手 所以我想我会重新创建他们的表单 一个简单的剪切 粘贴 通过 AJAX 提交表单 数据将转到电子表格 我可以将我的用户重定向到比谷歌默认的 谢谢你所做的一切 更漂亮的东西你刚刚做
  • 是否有任何理由使用 axios 而不是 ES6 fetch [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 研究了 axios 和 ES6 fetch 的文档 我发现两者非常相似 并且都受到 ajax 及其简写的强烈影响 axios 的主要优点是浏览器
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • jQuery 模板:使用 AND 运算符创建条件语句

    这有效
  • 为某个时刻添加持续时间 (moment.js)

    时刻版本 2 0 0 阅读文档后 http momentjs com docs manipulating add 我认为这很简单 Chrome 控制台 var timestring1 2013 05 09T00 00 00Z var tim
  • 如何使用 github 托管外部 CSS 文件?

    我将 css 上传到 github 然后转到网站上的文件并单击 raw 选项 我尝试将其添加到网页中 但 chrome 给出以下错误 资源解释为样式表 但使用 MIME 类型 text plain 进行传输 https raw github
  • 在给定索引上将字符串分成两部分并返回两部分

    我有一个字符串 需要在给定索引上拆分 然后返回两个部分 并用逗号分隔 例如 string 8211 8 211 98700 98 700 因此 我需要能够在任何给定索引上拆分字符串 然后返回字符串的两半 内置方法似乎执行分割 但只返回分割的
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 等待异步 grunt 任务完成

    我收到了 grunt 设置 其中一个新任务应该执行 grunt task run 已经存在的任务 要执行的任务是异步的 新任务应该等待异步任务完成 执行此操作的首选方法是什么 grunt 已经涵盖了这一点 你应该将你的任务声明为异步任务 并
  • 基于范围内变量的角度设置形式动作

    我一直在尝试设置一个搜索表单 可以在其中注入表单操作属性 在我的表格中我有
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • 如何禁用网页中的萤火虫?

    如何使用 Javascript 禁用 firebug 我想这样做是为了向访问者隐藏我的网页的运作方式 有什么选择可以做到这一点吗 你不能 你能做的最好的事情就是混淆你的 JavaScript 实际上刮掉了 您能做的最好的事情就是将所有安全关
  • Firebase 身份验证和实时应用程序数据库如何保护自身安全?

    从一般开发的角度来看 我很好奇如何保护在线资源的访问 我们使用以下 Firebase 配置参数初始化 Web 应用程序 apikey authdomain projectid databaseurl messagesenderid 服务器如
  • 获取类中的所有静态 getter

    假设我有这个类 我像枚举一样使用它 class Color static get Red return 0 static get Black return 1 有没有类似的东西Object keys to get Red Black 我使用
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 在引导程序中以编程方式更改选项卡窗格选项卡

    我使用的选项卡窗格定义为 ul class nav nav tabs li a href personal Personal Information a li li class active a href contact Contact a

随机推荐

  • Ubuntu 13.04:如何构建Monodevelop 4.0.1?

    我从git下载了源码 git clone git github com mono monodevelop git 和依赖项 cd monodevelop git submodule init git submodule update 我设置
  • 如何在 Bash 中解析 XML?

    理想情况下 我希望能够做的是 cat xhtmlfile xhtml getElementViaXPath path html head title sed e s g gt titleOfXHTMLPage txt 这实际上只是一个解释Y
  • C++编译时函数执行

    我的代码中有字符串标签 它们被转换为数字并用于搜索标签值结构中的值 我有这样的事情 void foo type value search SomeTag 其中搜索定义如下 type search const char tag return
  • 如何使用 jQuery 获取表格中的单元格 () x 和 y 坐标?

    我正在寻找一种获取表格中单元格 X Y 位置的好方法 不要将它与 css position 混淆 我正在寻找笛卡尔坐标系中的 X 和 Y 坐标 众所周知 我们可以使用以下命令获取表格中的特定单元格 grid 0 rows 5 cells 7
  • 使用类上的宏注释创建或扩展伴随对象

    使用 Scala 2 10 2 11 宏天堂注释宏 如何添加或扩展注释类的伴生对象 骨骼 import scala annotation StaticAnnotation import scala reflect macros import
  • 如何处理keras:错误:维度0的切片索引0超出范围

    我使用 keras tensorflow 后端 构建我的 lstm 网络 这是我的代码 from keras models import Sequential Model from keras layers import LSTM Conv
  • 如何在 GridView 中实现条件格式

    我的 aspx 页面上有一个 GridView 它显示由以下类定义的对象集合 public class Item public string ItemName get set public object ItemValue get set
  • 如何在C中对单个字符执行scanf [重复]

    这个问题在这里已经有答案了 在C中 我正在尝试从用户那里获取字符scanf当我运行它时 程序不会等待用户输入任何内容 这是代码 char ch printf Enter one char scanf c ch printf c n ch 为
  • 将项目的不同版本导入到 Eclipse 中

    我在 Eclipse 中有一个项目 现在我想导入另一个具有不同名称和位置的项目 但具有相同的结构 相同的包 很多相同的类 但是当我尝试导入它时 它说 某些项目无法导入 因为它们已经存在于工作区中 如果我想拥有一个项目的两个版本该怎么办 我应
  • MEF 导出是缓存还是每次请求时都会发现?

    如果我有一种类型 MyClass 请注册 Export typeof Myclass 属性 以及 PartCreationPolicy CreationPolicy Shared or PartCreationPolicy Creation
  • 如何从“浏览”选项卡中排除文件夹?

    我正在尝试排除上的几个文件夹ExploreVisual Studio Code 中的选项卡 为此 我添加了以下内容jsconfig json到我的项目的根目录 compilerOptions target ES6 exclude node
  • 如何捕获传单弹出窗口上的点击事件

    我在传单地图上同时打开多个弹出窗口 并且它们可以重叠 如果单击 我想将弹出窗口置于前面 虽然我可以轻松地点击地图map on click function e do something 我似乎无法用弹出窗口做同样的事情 如何捕获 L Pop
  • 带有圆角边缘的 ActionBar

    我想知道 是否可以使我的 ActionBar 具有圆角边缘 更具体地说 仅顶部圆角 左上 右上 我做了一些搜索 但大多数方法都已经过时 对我不起作用 我正在使用 AppCompat 支持库 v22 1 1 我已经制作了我想要实现的目标的图像
  • Next JS - getStaticProps 不返回任何内容

    我正在将 Next js 与上下文 API 和样式组件一起使用 但我似乎无法理解getStaticProps在职的 我读过其他帖子 他们经常谈论习俗 app我确实有 但在使用 context API 之前我从未遇到过这个问题 我也尝试过ge
  • 尝试时从 CultureInfo 中缺少国家和地点

    我需要本地化一个应用程序 并注意到有几个国家 地区没有出现在与cultureInfo 关联的县代码列表中 塞浦路斯就是一个例子 我想可能还有其他例子 如果我需要本地化塞浦路斯的设置 或其他缺失的设置 我将如何重命名我的资源文件 以便它们呈现
  • PHP PDO 多重选择查询始终删除最后一个行集

    我在使用 PDO 语句进行多项选择时遇到了似乎是错误的问题 我正在构建一个包含许多 SELECT 的 SQL 查询 无论它生成多少个 SELECT 语句 最后一个行集都会被删除 这是发生的事情的截断示例 pdo connection stu
  • 强制 C++ 结构紧密包装

    我正在尝试读取二进制文件 问题在于文件的创建者没有花时间将数据结构与其自然边界正确对齐 并且所有内容都包装得很紧 这使得使用 C 结构读取数据变得困难 有没有办法强制struct打包紧 Example struct short a int
  • 如果一个OU包含3000个用户,如何使用DirectorySearcher找到所有用户?

    我使用这段代码 DirectoryEntry objEntry DirectorySearcher objSearchEntry SearchResultCollection objSearchResult string strFilter
  • 从 UICollectionViewCell 使用 UICollectionView

    我有一个自定义 UICollectionViewCell 其内容也是一个集合 我想使用 UICollectionView 来显示其内容 这可能吗 我将如何实现这个目标 我制作了自定义 UICollectionViewCell 也继承自 UI
  • 是否可以在 Javascript 中发出跨域请求并设置自定义标头?

    由于您无法在 JSONP 调用上应用自定义标头 如何使用 jQuery 发出跨域请求并应用自定义标头 我基本上尝试使用 jQuery 访问 google 文档 并且需要传递身份验证令牌 var token my auth token aja