【问题标题】:javascript: fetch blocked by CORS policy because of wildcardjavascript:由于通配符,获取被 CORS 策略阻止
【发布时间】:2020-01-04 16:34:21
【问题描述】:

我正在尝试使用 fetch 使用以下 api 端点:

https://api.guerrillamail.com/ajax.php?f=check_email&ip=${ip}&agent=${agent}
(outdated documentation)

当我设置credentials: 'include' 时出现以下错误:

Access to fetch at 'https://api.guerrillamail.com/ajax.php?...' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

我必须设置标志才能提交 cookie 进行身份验证。 在谷歌搜索这个问题 1++ 小时后,我的理解如下: CORS 必须是服务器端允许能够向其他域发出“非简单”请求,例如localhost => guerrillamail.com 为防止滥用,必须将变量 Access-Control-Allow-Origin 设置为应允许发送请求的域。有效选项是“*”,这意味着所有来源都可以。
出于某种原因,尽管与credentials: 'include 标志结合使用是不行的。

您知道为什么不允许这样做吗?
你知道我必须做什么才能完成请求吗?
我对此的理解正确吗?

【问题讨论】:

  • api.guerramail.com 服务器应该发送该标头。如果您无法控制该服务器,则需要联系他们。

标签: javascript cors fetch wildcard


【解决方案1】:

您引用的文档不再适用。在那个旧文档中,API 是通过 HTTP 而不是 HTTPS 提供的。 CORS 不适用于 HTTP,不会有问题。

latest documention 中,该 API 通过 HTTPS 提供。为了处理 CORS 要求,他们还删除了对 cookie 的需求,将其更改为作为请求的一部分发送的 subscr_tokensid_token 参数:

1.5 版,2011 年 5 月 30 日
- 移除了对 cookie 的要求,增加了 subscr_token 和 sid_token 参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2021-04-16
    • 2018-02-26
    • 2019-11-19
    • 2020-09-12
    • 2022-01-14
    相关资源
    最近更新 更多