Cors 向我抛出错误“访问被拒绝”
Posted
技术标签:
【中文标题】Cors 向我抛出错误“访问被拒绝”【英文标题】:Cors throws me error "Acces is Denied" 【发布时间】:2014-09-14 06:29:09 【问题描述】:我已经构建了一个 SharePoint 应用程序,它使用 Jquery 调用 IIS 中托管的 Web 服务。
该应用程序将托管在 SharePoint 域下的 SharePoint Server 专用
https://qsspapp-3b9352b780820d.qsapps.com/teams/...
我的电话如下所示
private loadStates()
$.support.cors = true;
$.ajax(
type: "GET",
cache: false,
crossDomain:true,
url: "http://myservice.de/api/controller/getavailablestates",
success: (results) =>
console.log(results.Data);
this.availableStates.removeAll();
$.each(results.Data, (indexedDB, item: TableResultItem) =>
this.availableStates.push(new DataObjects.SelectionItem(item.rEQSTField, item.rEQST_DSCRField));
);
,
error: (jqXHR: any, textStatus: any, errorThrown: any) =>
console.log("loadStates Error: " + errorThrown);
,
);
My Service Web.config 包含以下 cors 设置:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>...
当我调用此方法时,它显示错误“访问被拒绝”。
我做错了什么?
【问题讨论】:
我希望您需要在 ajax 请求中提及用户名凭据 是的,但我目前没有身份验证例程。所以这不可能是问题。该服务也被授予匿名访问权限。 没有你的错误清楚地提到问题出在身份验证上,所以你得到“访问被拒绝”的原因。我希望您需要再次检查服务器 @AntoKing“访问被拒绝”在这种情况下很可能与身份验证无关。我猜您的服务器上不支持“OPTIONS”动词,因此不支持 CORS。使用 Fiddler 查看实际发出了哪些请求以及实际发送了哪些标头。 【参考方案1】:在webconfig中使用下面
<system.web>
<authentication mode="None" />
<authorization>
<allow users="?" />
</authorization>
</system.web>
希望这会有所帮助....
【讨论】:
【参考方案2】:我终于找到了可行的解决方案。
问题
我使用 HTTPS 系统 (SharePoint) 并调用 HTTP 系统 (Service Dispatcher)。 这适用于大多数浏览器,但不适用于 IE....(坏事..)
解决办法:
我必须为 Service Dispatcher 创建一个 HTTP 绑定,并将 Dispatcher Url 添加为插入站点。
之后就可以了。
感谢您的帮助! :)
【讨论】:
以上是关于Cors 向我抛出错误“访问被拒绝”的主要内容,如果未能解决你的问题,请参考以下文章
在 Angularjs 中的 IE10+ 中访问被拒绝 CORs 请求,需要跨源资源共享错误(信息?)
浏览器 11 | Angular 4 - CORS 请求失败(XMLHttpRequest:网络错误 0x80070005,访问被拒绝。)