为什么我的 suitelet return 登录页面作为响应?

Why does my suitelet return a login page as response?

我创建了一个 returns 对我的客户端脚本的响应的套件。尽管我在 suitelet 响应中添加了一些内容,但当我尝试在我的客户端脚本中读取我的 response.body 属性 时,它包含 html 呈现一个 netsuite 登录页面。

从客户端脚本调用:

var domain = url.resolveDomain({
hostType: url.HostType.APPLICATION
});
var scriptURL = url.resolveScript({
scriptId: 'scriptId',
deploymentId: 'deploymentId',
returnExternalURL: true
});
var suiteletUrl = "https://" +domain+scriptURL;
var results=https.get({
url: suiteletUrl
})
log.debug("Result is",results);
log.debug("Responsebody is",results.getBody);

response.body 属性 包含以下 html 代码:

<!doctype html>\n\n<html>\n<head>\n\t<title>NetSuite Login</title>\n\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n> ....(contd)

我的套件代码:

const onRequest = (scriptContext) => {
var html = '<html>' +
'<body>something:<br/>'
+'<form method="post">' +
' Input ' +
'<input type="text" name="something" id="something" value=""/> ' +
'<input type="submit"/> ' +
'</form></body></html>';
scriptContext.response.write(html);
}

知道问题出在哪里吗?

如果您从客户端脚本调用 suitelet,那么您想要设置 returnExternalURL: false 如果您的客户端脚本实际上是从 UI (window.location.href = resolvedURL) 调用的,但是如果你像以前一样打电话。

您也不需要计算域或将域添加到 URL

如果您正在生成 URL 以从外部应用程序使用,您需要将 suitelet 部署标记为无需登录即可使用,并使观众成为所有角色。

这来自我编写的生产客户端脚本,在 Sitebuilder 站点中调用客户端脚本并打开“脚本化检查”:

var scriptURL = url.resolveScript({
    scriptId: 'customscript_kotn_scipt1', 
    deploymentId: 'customdeploy_kotn_script1', 
    returnExternalUrl: true
});

var resp = http.get({
    url:scriptURL
});