gpt4 book ai didi

javascript - 不允许获取 PATCH 请求 (CORS)

转载 作者:行者123 更新时间:2023-12-03 20:19:20 25 4
gpt4 key购买 nike

所以我已经使用 fetch 很长一段时间了,没有任何问题。我已经创建了大量的 API,并且必须在多个 API 中实现 CORS。

但是,今天我似乎无法让 CORS 为单个补丁请求工作。它适用于 get/post/delete 没有问题,但补丁不起作用。

我已阅读 fetch patch request is not allowed ,遗憾的是我已经写了完全大写的补丁,所以这对我来说不是一个解决方案。

我的请求:

{
method: 'PATCH', //using POST here makes everything work fine.
json: true,
headers: defaultHeaders,
body: JSON.stringify({
type: 'analytics_analyzers',
attributes: {
status: active ? 1 : 2,
ssid: getState().config.ssid
}
})
}

和服务器的 .htaccess 文件:
SetEnvIf Origin "http(s)?://(www\.)?    (whitelistUrl1|whitelistUrl2|whitelistUrl3)$" AccessControlAllowOrigin=$0
Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header always set Access-Control-Allow-Credentials true

SetEnvIf Access-Control-Request-Headers ".*" AccessControlHeaders=$0
Header always set Access-Control-Allow-Headers: %{AccessControlHeaders}e env=AccessControlHeaders

SetEnvIf Access-Control-Request-Method ".*" AccessControlMethod=$0
Header always set Access-Control-Allow-Methods: %{AccessControlMethod}e env=AccessControlMethod

Options request
Error message

有人对我在这里做错了什么有任何想法吗?

最佳答案

实际上,当我们向服务器端发送一个不简单的 cors 请求时,例如 DELETE/ PUT / PATCH , 但不包括 POST/GET/HEAD ,浏览器会发送一个OPTIONS向服务器端请求(预检)然后询问它是否支持 METHOD/ORIGIN/HEADERS ,所以如果你只是指定了 PATCH 请求允许的方法是不够的。
这是我的示例代码,只是为了这个问题,可能不是那么优雅,希望你不要介意......

app.patch('/cors', (req, res) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length,Server,Date,access-control-allow-methods,access-control-allow-origin");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS,PATCH");
res.send('ok')
})

app.options('/*', (req, res) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length,Server,Date,access-control-allow-methods,access-control-allow-origin");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS,PATCH");
res.send('send some thing whatever')
})

关于javascript - 不允许获取 PATCH 请求 (CORS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com