在ajax调用
上收到此错误带有500错误代码的WebSocket错误:SECURITY_ERR,不允许跨区域连接
也返回。 我能够得到其他响应,这些响应似乎与进一步测试时的错误无关。请参阅下文,了解报告错误的位置。
来自此Angular电话
$http.post("Status.aspx/GetDataAsync", {})
.then(function(response){ $scope.theData = data;},
function(response){ $scope.result = "Error!";}
);
尝试调用WebMethod
后面的网页代码时,也会向其他网络服务发出也会进行网络服务调用。
[System.Web.Services.WebMethod]
public static async Task<string> GetDataAsync()
{
var httpresult = await (new HttpClient()).GetAsync("{Internal site rest service Url}");
return await httpresult.Content.ReadAsStringAsync();
}
这让我想起旧的Silverlight跨域问题电话......但我离题了。
问题 可以解决区域问题,还是必须直接调用休息服务?
尝试在方法级别使用CORS(请参阅Enabling Cross-Origin Requests (CORS)),例如
[System.Web.Services.WebMethod]
[EnableCors("AllowAllOrigins", "AllowHeaders", "AllowAllMethods")]
没有运气。
错误
这是在Edge(和IE)上的F12工具中发现错误的地方。 Chrome不会报告此问题。
答案 0 :(得分:1)
您需要设置网页的内容安全策略(CSP),以便浏览器不会阻止您的{内部网站休息服务网址。
以下是链接,这些链接,帮助我解决了这个问题: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src http://caniuse.com/#feat=contentsecuritypolicy
对于MVC,我将以下内容放在web.config中:
<httpProtocol> <customHeaders> <add name="Content-Security-Policy" value="connect-src 'self' wss://localhost:7717" /> </customHeaders> </httpProtocol>
然后我能够创建一个与wss:// localhost:7717的websocket连接,但是无法连接到任何其他端口。
浏览器阻止这些类型的请求以防止跨区域脚本攻击,因此您需要通过http标头完成策略设置策略。我正在处理类似的问题。我错过了一些东西,但我认为这是正确的方向。我需要别人的意见,因为这并不能解决问题。但它离得更近了。