Mailchimp 身份验证显示 Access-Control-Allow-Origin

Posted

技术标签:

【中文标题】Mailchimp 身份验证显示 Access-Control-Allow-Origin【英文标题】:Mailchimp authentication showing Access-Control-Allow-Origin 【发布时间】:2019-10-12 20:01:44 【问题描述】:

与 mailchimp 集成时,我在获得 access_token 后进行身份验证,然后我还发送 get 请求以获取元数据并面临问题。

在同步用户名和密码后,我得到了 access_token,但这段代码出现错误:

var AccessToken = '<?php //echo $_GET['access_token']; ?>'
jQuery.ajax( 
    url: "https://login.mailchimp.com/oauth2/metadata",
    type: 'GET',
    beforeSend : function( xhr ) 
        xhr.setRequestHeader( 'Authorization', 'OAuth ' +      
        AccessToken );
    ,
    success: function( response ) 
        console.log(response);
    ,
    error : function(error) 
        console.log(error);
    
 );

我也尝试从 curl 为:

public function list()

  $url = 'https://login.mailchimp.com/oauth2/token';
  $data = [
    'grant_type' => 'authorization_code',
    'client_id' => 345555555555555555555555,
    'client_secret' => '4b0xxxxxxxxxxxxxxxxxxxxx5406a7d',
    'redirect_uri' => 'http://127.0.0.1:8000/success',
    'code' => $_GET['code']
    ];
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $response = curl_exec ($ch);
 $err = curl_error($ch);  //if you need
 curl_close ($ch);
 return $response;
     
Access to XMLHttpRequest at 'https://login.mailchimp.com/oauth2/metadata' from origin 'http://127.0.0.1:8000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Cross-Origin Read Blocking (CORB) blocked cross-origin response https://login.mailchimp.com/oauth2/metadata with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.
send @ jquery.min.js:2
ajax @ jquery.min.js:2
(anonymous) @ list:74

【问题讨论】:

【参考方案1】:

您的请求中的错误表明 CORB

跨域读阻塞,俗称 CORB,是一种算法 识别并阻止了哪些可疑的跨域资源提取 在他们到达网页之前。 CORB 降低了泄漏的风险 敏感数据远离跨域网页。在 大多数浏览器,它将此类数据排除在不受信任的脚本执行之外 上下文。在具有站点隔离功能的浏览器中,它可以将此类数据拒之门外 完全不受信任的渲染器进程,甚至帮助 通道攻击。

由于您是从本地主机发出请求,因此它被认为是可疑来源,因此被阻止。

【讨论】:

你能建议我如何从 Oauth2 中的 access_token 获取元数据

以上是关于Mailchimp 身份验证显示 Access-Control-Allow-Origin的主要内容,如果未能解决你的问题,请参考以下文章

Mailchimp“invalid_grant”错误

如何在 laravel 5.5 中验证 Mailchimp api 密钥

连接到 MailChimp v3.0 API

将所有数据从Firebase数据库导入Mailchimp

带有 MailChimp 自动化错误的快速用户注册

将 Firebase 数据库中的所有数据导入 Mailchimp