使用自定义标头获取 GET 请求?

2023-11-23

我正在尝试向 API 发送 GET 请求,但是当我在代码中添加自定义标头时,会发生一些奇怪的事情。 当请求方法到达 Web 服务器时,某个地方会更改为 OPTIONS。

但是当我在没有标头的情况下执行相同操作时,它将是 GET 类型。 当我使用应用程序邮递员(API 开发工具)时,请求工作正常!

请求代码:

    let token = this.generateClientToken(privateKey, message);

    let myheaders = {
      "appID": appID,
      "authorizationkey": token
    }

    fetch('http://localhost:8080/api/app/postman', {
      method: "GET",
      // body: JSON.stringify(''),
      headers: myheaders
    }).then(function(response) {
      console.log(response.status);     //=> number 100–599
      console.log(response.statusText); //=> String
      console.log(response.headers);    //=> Headers
      console.log(response.url);        //=> String

      return response.text()
    }, function(error) {
      console.log(error.message); //=> String
    })
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

服务器日志输出(带标题):

worker_1  | 172.18.0.4 -  17/Mar/2017:15:47:44 +0000 "OPTIONS /index.php" 403
web_1     | 172.18.0.1 - - [17/Mar/2017:15:47:44 +0000] "OPTIONS /api/app/postman HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0" "-"

服务器日志输出(不带标题):

worker_1  | 172.18.0.4 -  17/Mar/2017:16:01:49 +0000 "GET /index.php" 403
web_1     | 172.18.0.1 - - [17/Mar/2017:16:01:49 +0000] "GET /api/app/postman HTTP/1.1" 403 5 "http://localhost:3000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0" "-"

添加了 NPM 模块以在额外的浏览器中提供获取支持:
https://github.com/github/fetch#obtaining-the-response-url
https://github.com/taylorhakes/promise-polyfill

我在这里缺少什么?在我看来这一切都是正确的。

我正在使用 Firefox 开发版通过 NPM start 运行它来测试 Reactjs 应用程序


接受的答案游戏我的解决方案,我没有使用nodeJS后端,而是使用带有php-fpm的普通Nginx。

但答案解释了带有自定义标头的请求如何总是首先执行 OPTIONS 请求来验证是否接受设置的标头名称,因此我必须更改网络服务器中的响应以返回包含正确标头的 204 代码。 如果没有它,我的 PHP 代码中身份验证将失败并导致 403 代码,因为缺少包含内容和所使用的请求方法的标头。

这是我添加到 Nginx 主机以使其正常工作的内容:

location ~ \.php$ {
             add_header 'Access-Control-Allow-Origin' "*";
             add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
             add_header 'Access-Control-Allow-Headers' 'appID,authorizationkey';

             if ($request_method = 'OPTIONS') {
                return 204;
             }
}

我知道它远非完美,但目前它已经可以工作了。再次感谢您为我指明了正确的方向。

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

使用自定义标头获取 GET 请求? 的相关文章

  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 在 Node.js 中,什么是“on”?

    In 官方文档 http nodejs org docs v0 6 3 api http html http ClientResponse 有一些示例代码 var req http request options function res
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • Nodejs 在循环中等待

    我想循环等待 实现此目的的最佳方法是什么 这是我的实际代码 var groups 461 6726 3284 4 121 11 399 1735 17 19 1614 groups forEach function value myfunc
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 如何获取 vuejs 组件单元测试中定义的“this”变量

    我正在尝试在 npm 脚本中使用 mocha webpack 来测试 vuejs 组件 我在测试中像这样嘲笑 vuex 商店 const vm new Vue template div div
  • node.js 本身还是 nginx 前端来提供静态文件?

    是否有更快的基准或比较 将 nginx 放在节点前面并让它直接提供静态文件或仅使用节点并使用它提供静态文件 nginx 解决方案似乎对我来说更易于管理 有什么想法吗 我不得不不同意这里的答案 虽然 Node 可以做得很好 但如果配置正确 n
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 摆脱node-jsx

    在我的 NodeJS 应用程序的路由器中 我想渲染一个 React 应用程序 由于它没有被浏览器化 并且已反应 因此它返回unexpected token lt 构建时出错 我发现如果我require node jsx install 它不
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐

  • ValueError:字典更新序列元素#0的长度为1;需要 2 个

    我回来了5对于我的计算领域old default code 并且我收到以下错误 ValueError 字典更新序列元素 0的长度为1 需要 2 个 我究竟做错了什么 该函数的Python代码 def old default code sel
  • 从 bean 强制关闭 Spring 的最佳方法?

    我的应用程序使用 SpringDefaultMessageListenerContainer处理传入的消息 应用程序的 main 方法已经注册了一个关闭钩子 问题是 强制关闭应用程序上下文的最佳方法是什么 如果我扔一个RuntimeExce
  • 添加形状到 LinearLayout Android

    我有一个线性布局 有一些自动完成和文本框 我想在线性布局中插入一个形状 矩形 我怎样才能做到这一点 我是安卓新手
  • 将 WCF 服务转换为 RESTful 应用程序?

    嘿 我在将 wcf 变成一项轻松的服务方面没有取得任何进展 所以我想知道当您在此处启动 WCF 服务应用程序时是否有人可以获取基本代码 using System using System Collections Generic using
  • 当我只知道字符偏移量时,如何创建范围对象?

    所以我有一个包含文本块的 div 之前用户已在该块中选择了一些文本 并且我从该选择中创建了一个范围对象 我存储了所选文本的起点和终点的偏移量 但在重新创建范围时遇到问题 以便我可以操纵它 quotables 是保存所有文本的 div 我不知
  • Spring Boot + Thymeleaf 找不到消息属性

    我正在尝试使用 Spring Boot 和 Thymeleaf 创建一个 Web 应用程序 但在让模板使用属性文件中定义的消息时遇到问题 它不是显示属性文件中定义的消息 而是显示 form welcome en GB 控制台没有记录任何错误
  • 如何知道 JavaScript 中的计时器是否被清除或超时?

    好吧 非常简单的问题 我正在参加 javascript 速成课程 如果我使用timer setTimeout 500 设置计时器 然后clearTimeout timer 要清除计时器 计时器的整数值不会改变 所以我的问题是如何知道计时器是
  • 初始化/重置结构为零/空

    struct x char a 10 char b 20 int i char c char d 10 我正在填充这个结构 然后使用这些值 在下一次迭代中 我想将所有字段重置为0 or null在我开始重用它之前 我怎样才能做到这一点 我可
  • Java:如何在 Swing 中进行双缓冲?

    EDIT TWO 为了防止尖锐的评论和一行回答没有抓住要点 IFF就像打电话一样简单设置双缓冲 真 那么我如何访问当前的离线缓冲区 以便我可以开始弄乱 BufferedImage 的底层像素数据缓冲区 我花时间写了一段正在运行的代码 看起来
  • 在不同情况下使用不同的 Hibernate 用户类型

    我使用 Hibernate JPA 作为我的 ORM 解决方案 我使用 HSQL 进行单元测试 使用 PostgreSQL 作为真正的数据库 我希望能够使用 Postgres 的原生UUID使用 Hibernate 键入 并在 HSQL 的
  • 在 pycharm/pydev 中调试 pytest 事后异常

    我想将 PyCharm 的内置 Pytest 运行器与调试器一起使用 而无需预先配置断点 问题是我的测试中的异常被 Pytest 捕获 因此 PyCharm 的事后调试器无法处理该异常 我知道使用断点是有效的 但我不想运行两次测试 在 Un
  • IOS5 setBrightness 不适用于 applicationWillResignActive

    I use UIScreen mainScreen setBrightness 在 sdk 5 0 中 更改我的应用程序中的系统背景光 以下步骤适用于我的应用程序 激活应用程序 将系统亮度设置为默认值 然后另存为sysBright 使用我的
  • 混合触发器与 WPF 触发器

    在我看来 Blend 风格和 Blend 风格之间有很大的区别 Trigger可以在 Interactivity 命名空间中找到 经典的Trigger可通过样式获得 ControlTemplates 等 在 WPF 中 我想这可能也适用于
  • 刷新缓冲区是什么意思?

    我正在学习C 我发现一些我无法理解的东西 可以显式刷新输出缓冲区以强制缓冲区 书面 默认情况下 读取cin脸红cout cout也被冲得通红 当程序正常结束时 因此 刷新缓冲区 例如输出缓冲区 是通过删除缓冲区中的所有内容来清除缓冲区 还是
  • 如何查看运行状态并停止耐用功能

    我想按需处理数百万条记录 处理时间大约需要 2 3 小时 我想要无服务器 这就是为什么尝试持久功能 第一次 我想检查一下 我可以运行持久函数多长时间 所以我创建了 3 个函数 用于启动 Orchestrator 功能的 Http 函数 Or
  • 在 Spark/Jetty-server 中重新加载静态文件

    我在这里描述了一个有点类似的问题 刷新 SparkJava 提供的静态文件 在我的应用程序中 用户可以将内容上传到一个文件夹 该文件夹也提供给用户 Spark staticFileLocation public 特征 据我所知 SparkJ
  • Github webhooks - 预推送挂钩

    我的要求是 每当开发人员推送到 github 时 在推送之前应该在 Jenkins 服务器上触发 CI 构建 如果构建失败 则应拒绝推送到 github 我需要为此编写挂钩 但我不想编写客户端挂钩 因为开发人员可以禁用它们 我想要服务器端
  • PHP - error_reporting 不起作用

    我的网络托管提供商不提供启用错误报告的选项 所以尝试使用 error reporting E ALL 但这也行不通 我尝试了以下脚本 如果我正确阅读了手册 那么这应该会生成错误通知 但这也行不通 我是否做错了什么 或者这是获得新的网络托管提
  • 在 Scala 中重载通用事件处理程序

    如果我定义以下通用事件处理程序 trait Handles E lt Event def handle event E 事件类型如下 trait Event class InventoryItemDeactivated val id UUI
  • 使用自定义标头获取 GET 请求?

    我正在尝试向 API 发送 GET 请求 但是当我在代码中添加自定义标头时 会发生一些奇怪的事情 当请求方法到达 Web 服务器时 某个地方会更改为 OPTIONS 但是当我在没有标头的情况下执行相同操作时 它将是 GET 类型 当我使用应