【发布时间】:2018-01-17 09:32:17
【问题描述】:
我正在从浏览器发送这样的 POST 请求:
fetch(serverEndpoint, {
method: 'POST',
mode: 'no-cors', // this is to prevent browser from sending 'OPTIONS' method request first
redirect: 'follow',
headers: new Headers({
'Content-Type': 'text/plain',
'X-My-Custom-Header': 'value-v',
'Authorization': 'Bearer ' + token,
}),
body: companyName
})
当请求到达我的后端时,它不包含 X-My-Custom-Header 或 Authorization 标头。
我的后端是 Firebase 的 Google Cloud 功能(基本上只是 Node.js 端点),如下所示:
exports.createCompany = functions.https.onRequest((req, res) => {
let headers = ['Headers: ']
for (let header in req.headers) {
headers.push(`${header} : ${req.headers[header]}`)
}
console.log(headers)
...
}
该 Google Cloud for Firebase 函数的控制台日志不包含任何 X-My-Custom-Header 或 Authorization 标头。
怎么了?
编辑 1
因此,使用 Chrome 中的开发工具检查是否没有从浏览器发送 X-My-Custom-Header 和 Authorization 标头...现在的问题是:为什么?我该如何解决?
编辑 2
关于我的应用的更多信息:它是 React 应用。我有残疾服务人员。我试图创建Request 并专门使用req.headers.append() 添加标题。标题仍然不会发送。
【问题讨论】:
-
您的浏览器是否真的在发送标头?检查您的开发工具。
-
@JoeClay 我是一位经验丰富的开发人员(移动、后端),但对 Web 前端开发还比较陌生。许多工具对我来说都是新的——尤其是 brownser 中的开发工具还不是我的好朋友。你能建议我如何在 Chrome 或 Safari 上检查它吗?谢谢
-
在 Chrome 中,按 F12 打开您的开发工具,然后切换到网络选项卡。当您的应用程序发送 HTTP 请求时,它会出现在列表中,您可以单击它来查看请求和响应的标头/正文。有关更多信息,请参阅the docs - 如果您刚开始进行 Web 开发,学习如何使用浏览器的开发工具将帮助您加载 :)
-
@JoeClay 所以答案是否浏览器不发送
X-My-Custom-Header也不发送Authorization。现在剩下的问题是为什么?以及如何解决?
标签: javascript http post cors fetch-api