GetResponse Api 集成使用 fetch() 不起作用

Posted

技术标签:

【中文标题】GetResponse Api 集成使用 fetch() 不起作用【英文标题】:GetResponse Api integration Using fetch() is not working 【发布时间】:2021-11-24 12:22:26 【问题描述】:

GetResponse Api 集成使用 Fetch API 方法不起作用

控制台中显示以下短信:

Cross-Origin Request Blocked: 
The Same Origin Policy disallows reading the remote resource at https://api.getresponse.com/v3/contacts.
(Reason: CORS header 'Access-Control-Allow-Origin' missing).

代码如下:

// main.js

// POST request using fetch()
fetch("https://api.getresponse.com/v3/contacts", 
    
    // Adding method type
    method: "POST",
    
    // Adding body or contents to send
    body: JSON.stringify(
        
            campaign : 
                campaignId: "5D8Qm"
            ,
            name: "xyz",
            email: "fdfdfd@gmail.com"
        
    ),
    
    // Adding headers to the request
    headers: 
        
        
        "X-Auth-Token": "api-key o9q5s264jbp9dws0nsevnagqdst81esh",
        "Content-type": "application/json"
    
)

// Converting to JSON
.then(response => response.json())

// Displaying results to console
.then(json => console.log(json));

【问题讨论】:

检查您的请求和响应标头。这是经典的 CORS 问题(更多:access-control-allow-origin) 感谢您的回答。实际上,当我使用 cURL 时,它可以正常工作,但是当我使用 Fetch API 时,它就无法正常工作。我想知道这是什么原因。 “我想知道原因” -> CORS 是与浏览器相关的东西。这就是为什么当你使用 cURL 时它没有发生。它是一种特定于浏览器的防御机制 如果您使用 cURL,请确保您使用它:curl -s -D - https://api.getresponse.com/v3/contacts,其中-s避免显示进度条,以及-D转储标头到文件-强制重定向到标准输出。 HTTP 协议的标头很重要。 CORS 标准发生在这些标头中。 【参考方案1】:

正如 azbarcea 所说,这是一个经典的 CORS 问题。

关于为什么 cURL 有效但 Fetch API 无效的评论,您可以参考 Stack Overflow 中的this answer。

【讨论】:

以上是关于GetResponse Api 集成使用 fetch() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

api调用在一种方法中工作但在另一种方法中不起作用---TypeError:无法读取未定义的属性'getResponse'

PayPal API Http 调用问题

React 无法使用 Fetch API 下载数据 [重复]

python连接MySQL数据库问题? cursor( ) 、execute()和fetc

HttpWebRequest .GetResponse 抛出 WebException '操作已超时'

使用 HttpWebRequest.GetResponse() 进行屏幕抓取时出现错误“远程服务器返回错误:(403) Forbidden”