簡體   English   中英

HTTP錯誤405.0-從angularjs應用訪問web-api時不允許使用方法

[英]HTTP Error 405.0 - Method Not Allowed while accessing web-api from angularjs app

在此處輸入圖片說明 我正在創建一個Anjular js應用程序,其中已創建一個登錄頁面並使用Web API對其進行即時身份驗證。 這是返回json且正在正常運行的控制器。

[Route("api/Customer/{id}/{pass}")]
public IEnumerable GetCustomer(string id, string pass)
{
        var list = repository.Get(id, pass);

        if (list != null)
        {
            return list;
        }
        else
        {
            return null;
        }
}

這是控制器在角度應用程序(demoApi.js)中訪問api

(function () {
    'use strict';
    var DemoApi = function ($http) {
    var loginCheck = function (username, password) {
        return $http.get("http://localhost:8115/api/Customer/" +username+"/"+password)
            .then(function (response) {
                return response.data;
            });
        };
        return {
             loginCheck: loginCheck
        }
    };

    var app = angular.module("angularApp");
    app.factory("DemoApi", DemoApi);

}());

這是登錄控制器(loginController.js)

(function () {
var app = angular.module("angularApp");

var loginController = function ($scope, $http, bankApi, $location) {
    var userDetails = {
        username: $scope.uName,
        password: $scope.uPassword
    };

    $scope.login = function () {
        DemoApi.loginCheck(userDetails.username, userDetails.password)
            .then(onLogin, onError);
    };

    var onError = function (reason) {
        $scope.error = "Could not fetch the data.";

    };
    var onLogin = function (data) {
        $scope.details = data;
        $location.path("/info");
    };
}

app.controller('loginController', loginController);
}());

這是我鏈接了所有腳本的索引頁

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="angularApp">
    <head>
   <title>Ebank</title>
   <script src="Scripts/angular.js"></script>
   <script src="Scripts/angular-route.js"></script>
   <link href="Content/bootstrap.min.css" rel="stylesheet" />
   <script src="lib/app.js"></script>
   <script src="lib/bankApi.js"></script>   
   <script src="lib/loginController.js"></script>
   <script src="lib/infoController.js"></script>
   </head>
   <body style="background-color:#333">
   <div ng-view></div>
   </body>
</html>

給我提供一個解決方案,為什么我不能從demoApi.js調用api如果我直接從html頁面調用此api但沒有從demoApi.js接收響應,為什么我得到響應

很可能您遇到了CORS問題。 您需要啟用CORS。 請遵循以下提到的步驟。

  1. 打開位於C:\\ Program Files(x86)\\ IIS Express \\ AppServer上的IISExpress配置文件applicationhost.config。
  2. 搜索“ httpProtocol”標簽。 在其中檢查“ customHeaders”標簽是否存在。 如果沒有,則添加它。
  3. 在“ customHeaders”標簽內添加以下兩個標簽。

<add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" />

或者,您可以在命令提示符下使用以下命令以禁用安全性的模式運行chorme瀏覽器,然后嘗試從那里訪問您的網站。

chrome.exe的完整路徑--disable-web-security --user-data-dir

請注意,它只是測試您的應用程序的解決方法,但是在生產部署中,您需要啟用CORS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM