我正在嘗試使用Twilio函數爲我的Twilio應用程序處理令牌生成。我以前使用Node.js + Express服務器來完成這個任務,但我不知道如何在這種類型的環境中找出啓用CORS的方法。
我的客戶端代碼如下所示:從Node.JS回調函數啓用CORS
$('#new-twilio').click(function(){
var toNum = this.value;
if(token == undefined) {
$.getJSON('https://my-twilio-function/endpoint').done(function(data){
token = data.token;
Twilio.Device.setup(token, {debug: true});
Twilio.Device.ready(function(device){
Twilio.Device.connect({"PhoneNumber": toNum});
});
}).fail(function(error){
alert("Failure!");
alert(JSON.stringify(error));
});
} else {
Twilio.Device.connect({"PhoneNumber": toNum});
}
});
我的功能代碼如下所示:
exports.handler = function(context, event, callback) {
const client = context.getTwilioClient();
const ClientCapability = require('twilio').jwt.ClientCapability;
const responseHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST",
"Access-Control-Allow-Headers": "content-type, accept",
"Content-Type": "application/json"
};
let identity = "sampleIdentity";
const capability = new ClientCapability({
accountSid: context.ACCOUNT_SID,
authToken: context.AUTH_TOKEN
});
capability.addScope(new ClientCapability.IncomingClientScope(identity));
capability.addScope(new ClientCapability.OutgoingClientScope({
applicationSid: context.TWILIO_TWIML_APP_SID
}));
console.log(capability.toJwt());
callback(null, {headers: responseHeaders, identity: identity, token: capability.toJwt()});
};
值得注意的是,在執行console.log證明該函數返回的確切標誌,我需要,但我不斷收到此錯誤:
XMLHttpRequest cannot load https://my-twilio-function/endpoint. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
很顯然,我的twilio功能是在一個真實的URL。盡我谷歌,我無法找到如何允許訪問控制這種類型的節點方法。
它會看看你導入那個函數的地方,以及什麼'回調函數'有趣嗎? – adeneo
這有幫助嗎? https://www.twilio.com/docs/api/runtime/functions/faq#how-do-i-send-cors-headers我不禁注意到他們沒有提及對「*」的支持(或缺乏它)。 – Will
@adeneo,回調應該返回一個數據到任何被稱爲函數的地方。如果它是一個JavaScript對象,它將作爲JSON返回,你也可以做TwiML。 –