Angular 帖子在 Chrome 中失败
Posted
技术标签:
【中文标题】Angular 帖子在 Chrome 中失败【英文标题】:Angular post failing in Chrome 【发布时间】:2014-10-13 11:34:23 【问题描述】:我有以下
function quoteGridController($scope, $http)
$http.defaults.useXDomain = true;
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
delete $http.defaults.headers.common['X-Requested-With'];
$http.post("http://localhost:57048/service/Quote/ReadQuoteForClientId", $.param( "ClientId": 2 ))
.success(function (data, status)
alert("Success");
$scope.status = status;
$scope.data = data;
)
.error(function (data, status)
alert("Error");
$scope.status = status;
$scope.data = data;
);
此调用在使用 Chrome 时失败,但在使用 Internet Explorer 时成功。根据我的阅读,这是一个 CORS 问题。有什么方法可以让这个调用同时在两个浏览器上工作?
编辑:Chrome 控制台给了我以下信息
XMLHttpRequest 无法加载。不 'Access-Control-Allow-Origin' 标头出现在请求的 资源。因此不允许 访问。
【问题讨论】:
你的 chrome 控制台说什么?你会在上面的帖子中发布它吗? 这不是一个仅限客户端的问题,正如 here 所解释的那样。您还必须修改服务器发送的标头(以允许 Chrome 中本地主机上的 CORS)。这是one possible approach。 【参考方案1】:正如上面的 cmets 所述,这不是客户端问题。从本地主机运行时,Chrome 不允许使用 CORS。一种可能的解决方案是使用自定义域名运行您的 Web API,如 here 所述。
然而,我采取了简单的方法,并在禁用网络安全的情况下启动了 Chrome,这样我就可以测试我的网络 API 代码。从命令提示符运行它
chrome.exe --disable-web-security
然后运行你的应用程序
【讨论】:
以上是关于Angular 帖子在 Chrome 中失败的主要内容,如果未能解决你的问题,请参考以下文章
Angular 8 - Headless Chrome 运行两次,第二次失败
Typescript 使用 Apollo Client for Angular 2 失败
为啥我的单元测试在 Chrome 中通过而在 PhantomJS 中失败?
Ionic V3 请求在 Chrome 浏览器和模拟器中随机失败