0

我在使用surveyMonkey API 时遇到问题。我可以使用除 Crate_flow 和 Send_flow 之外的任何公共方法。这两个在控制台中引发了我的错误:

选项 http://api.surveymonkey.net/v2/client/create_flow?api_key= **MYAPI* 596 (596) Index.html:61 XMLHttpRequest 无法加载http://api.surveymonkey.net/v2/client/create_flow ?api_key= **MYAPI*。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。Index.html:61 未捕获的网络错误:无法在“XMLHttpRequest”上执行“发送”:无法加载“ http://api.surveymonkey.net/v2/client/create_flow?api_key=**MYAPI* ”。

我正在使用的代码是这样的:

    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://api.surveymonkey.net/v2/batch/send_flow?api_key="+MYAPI, false);
    xhr.setRequestHeader('Access-Control-Allow-Origin' ,'*');
    xhr.setRequestHeader('Authorization','bearer '+TOKEN);
    xhr.setRequestHeader('Content-Type', 'application/json');
    var body = '{"survey_id" :"54681373","collector":{"type":"email", "recipients":[{"email": "martins.nuno.santos@gmail.com", "first_name": "Nuno", "last_name": "Santos"}],"send":true}, "email_message":{"reply_email":"martins.nuno.santos@gmail.com", "subject":"YOLO", "body_text": "Vamos lá experimentar isto ! [SurveyLink], para remover carrega em [RemoveLink]"}}';
    xhr.send(body);
    console.log(xhr.status);
    console.log(xhr.statusText);
    console.log(xhr.responseText);
4

1 回答 1

0

需要 SSL

您收到该错误消息的原因是您使用错误的协议(HTTP 而不是 HTTPS)访问 API。由于需要 SSL,因此您会在 response 的正文中收到一条错误消息<h1>Service Requires SSL</h1>。但是,该消息不会以“Access-Control-Allow-Origin”标头发送给您,而是会触发此错误消息。

如果您更改http://api.surveymonkey.nethttps://api.surveymonkey.net,您应该很高兴。

附带说明:“Access-Control-Allow-Origin:*”标头是服务器将发回给您的内容。这不是您需要发送到服务器的东西。这是您收到的响应中缺少的内容。您可以安全地从代码中删除将其添加到您的请求的行。

于 2014-08-14T19:13:45.853 回答