我正在尝试使用REST API(sharepoint)进行查询并获得一些结果。
这是我开始的地方
这就是我所拥有的
document.getElementById("restApi")
.addEventListener("click", restApi, false);
function restApi() {
var queryUrl = "https://myAppDomain.org/_api/search/query?querytext='" + $("#restSearch").val() + "'";
$.ajax({
type: "GET",
url: queryUrl,
xhrFields: {
withCredentials: true
},
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (data) {
var results = data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results;
},
error: function (error) {
}
});
}
这就是问题所在。
XMLHttpRequest无法加载“https://myAppDomain.org/_api/search/query?querytext=x”请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许来源“http://localhost:63734” 访问。
以及我尝试提供密码和用户名的另一种方式
headers: {
"Accept": "application/json; odata=verbose",
"password": "my password",
"username": "my account name"
},
我得到了
XMLHttpRequest无法加载 https://myAppDomain.org/_api/search/query?querytext=x。回应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许来源“http://localhost:63734” 访问。响应的HTTP状态代码为401。
我正在使用.net webApi,我已经安装了cors包,配置
// Enabled cors
config.EnableCors(new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true });
该应用是内部的,我正在使用Windows凭据传递和帐户名称。
那么为什么我得到这个错误,我做错了什么?,我搜索并尝试了其他解决方案,但总是得到与
相关的相同问题请求的
上没有'Access-Control-Allow-Origin'标题
答案 0 :(得分:3)
在system.webServer节点
中添加以下代码<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
保存并退出
答案 1 :(得分:1)
我设法解决了我的问题(部分原因,因为我本来想在客户端使用CSOM而不是REST API)允许从我的应用程序直接调用应用程序(sharepoint app)的跨域调用提出要求。
因此,在请求的应用程序中,我添加了以下文件:
web.config
部分:
system.webserver / httpprotocol / customheaders
内容:
<add name="Access-Control-Allow-Origin" value="https://myApplicationDomain.zzz" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Credentials" value="true" />
答案 2 :(得分:0)
如果您正在开发服务器
你有没有把#34; Access-Control-Allow-Origin:localhost&#34;在您的.htaccess或您的网络服务器配置中?
您也可以在服务器的响应中添加该标头。