api - 如何将自定义标头参数添加到 clojurescript 中的 API GET 调用
问题描述
我正在使用 KeeFrame 在 clojurescript 中构建一个演示应用程序,并检索该网站的部分信息,我需要调用一个外部 API,该 API 需要在 GET 请求中使用自定义 HTTP 标头参数
我将 re-frame.core 用于 API 调用,它使用 ajax.core。我也尝试用 cljs-http.client 替换它。然而结果是一样的。我已经设法通过在服务器站点使用 clj-http 将自定义标头参数添加到请求标头。但这不是我想为这个网站实施的解决方案,因为这意味着我首先必须重建我正在调用的 API。所以我可以在没有参数的情况下从我的 clojurescript 中使用它。
此代码有效。生成正确的 GET 请求
{:http-xhrio {
:method :get
:uri (str transuri "/acquirer/" 673072009 "/acquirerref/" acquirerRefNo)
:headers {"Accept" "application/json"}
:response-format (http/json-response-format {:keywords? true})
:on-failure [:common/set-error]}}
以“Accept: application/json”作为请求头
此代码不起作用。生成的不是 GET 请求,而是 OPTIONS 请求
{:http-xhrio {
:method :get
:uri (str transuri "/acquirer/" 673072009 "/acquirerref/" acquirerRefNo)
:headers {"Accept" "application/json" "Custom" "Value"}
:response-format (http/json-response-format {:keywords? true})
:on-failure [:common/set-error]}}
并且在请求标头中“Accept:application/json”不可见,但“Access-Control-Request-Headers:custom”是
我期望在请求标头中有一个带有“Accept: application/json”和“Custom: Value”的 GET 请求。
有人可以告诉我我做错了什么或为我提供有关此信息的链接吗?
提前致谢
解决方案
浏览器将发送“preflight” OPTIONS 请求以验证是否允许发送“Custom”请求标头。服务器应该通过回复“Access-Control-Allow-Headers”来批准。
推荐阅读
- excel - 从活动单元格为每个单元格执行循环
- node.js - 如何删除位于文件夹内的唯一文件(图像)
- pocketsphinx-android - 为什么 Pocketsphinx 唤醒词检测会随着时间的推移变得更糟?
- javascript - 在 JS 中创建杂志风格画廊
- android - 使用 ExoPlayer 处理耳机按钮点击
- sql - 将表中的每一行与其他每一行进行比较,一次且仅一次
- sql - 使用 postgresql 计算 datediff 并产生年数
- odoo - 如何在 Odoo 中定义自定义设置
- git - 如何解决致命:无法访问,CONNECT 后从代理收到 HTTP 代码 400
- mysql - 如何使用用户提交的变量进行查询并保存?