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 浏览器和模拟器中随机失败

Cordova - 为啥 $http get 请求在 android 设备上失败但在 chrome 上工作

Angular2 种子:npm start 有 gulp 错误