我正在使用跨域ajax调用Spotfire服务器创建客户端会话。对于身份验证我使用基本身份验证方法。当我通过Postman使用Authorization
标头和值'Basic ' + btoa('user:password')
发出请求时,它会发送正确的标头并开始新的会话,而在网络浏览器中则显示错误为
NetworkError:405方法不允许 - http://server-path/GetJavaScriptApi.ashx?Version=8.0
&安培;
阻止跨源请求:同源策略禁止读取 远程资源在 http://server-path/GetJavaScriptApi.ashx?Version=8.0
(原因:缺少CORS标题'Access-Control-Allow-Origin'。
这是因为在跨域调用ajax调用OPTIONS
请求后跟POST/GET
,为了克服这个问题,我在我的ajax调用中创建了dataType: "jsonp"
。现在GET调用正在运行,但现在给我一个新错误:
来自的资源 “http://server-path/GetJavaScriptApi.ashx?Version=8.0&callback=jQuery111107482621169238032_1487159470493&_=1487159470494” 由于MIME类型不匹配而被阻止(X-Content-Type-Options: nosniff)。
Ajax代码如下:
$.ajax({
url: 'https://server-path/GetJavaScriptApi.ashx?Version=8.0',
type: 'GET',
crossDomain: true,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", Basic ' + btoa('user:password'));
xhr.setRequestHeader("content-type", 'text/plain');
xhr.setRequestHeader("X-Content-Type-Options", "nosniff");
},
dataType: "jsonp",
success: function (jsonData) {
console.log(jsonData);
},
});
成功验证后,调用https://server-path/GetJavaScriptApi.ashx?Version=8.0
返回javascipt作为响应
请帮忙解决..谢谢