景物
我试图调用IBM中的一个服务,并发送了一个文件。此请求必须在Sharepoint中使用JavaScript完成。在请求中,将发送一个文件。问题
我有交叉域( Sharepoint侧)和坏请求(IBM)在Sharepoint Online上的问题。我试了几种类似的方法。
尝试
要解决跨域问题:
$.ajax({
url: "../_api/SP.WebProxy.invoke",
type: "POST",
data: JSON.stringify(
{
"requestInfo": {
"__metadata": { "type": "SP.WebRequestInfo" },
"Url": "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={API-KEY}&version=2016-05-20",
"Method": "POST",
"Headers": {
"results": [{
"__metadata": { "type": "SP.KeyValue" },
"Key": "Accept",
"Value": "application/json;odata=verbose",
"ValueType": "Edm.String"
}, {
"__metadata": { "type": "SP.KeyValue" },
"Key": "Content-Type",
"Value": "application/json",
"ValueType": "Edm.String"
}]
}
,
"Body": JSON.stringify({ "files":[ { "name":"imagem.png","content": image } ]})//Problem here
}
}),
headers: {
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
alert("Sucesso");
console.log(data.d.Invoke.StatusCode);
console.log(JSON.stringify(data.d.Invoke.Body));
},
error: function (data) {
alert("Falha");
console.log(arguments[2]);
}
});这样就解决了问题交叉域(Sharepoint),但我收到了不好的请求(IBM)。模型重发文件显示如下。
"Body": JSON.stringify({ "files":[ { "name":"imagem.png","content": image } ]})要解决不良请求问题:
function CORS() {
var data = new FormData();
data.append("imagemTeste", $("#imagem")[0].files[0]);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={API-KEY}&version=2016-05-20');
xhr.onload = function (e) {
var data = JSON.parse(this.response);
console.log(data);
}
xhr.send(data);
}这里解决了问题坏请求(IBM),但我得到了跨域错误(Sharepoint)。
我没办法解决这个问题了。
发布于 2018-06-15 02:27:31
一种选择是从服务器调用API。例如,您可以使用云函数来调用这个API。任何其他服务器端环境都应该工作。希望这能有所帮助。
https://stackoverflow.com/questions/48404891
复制相似问题