2017-08-17 26 views
0

网页API我有以下的jQuery代码,成功地使授权调用Web API从同一个(项目)的端口号,用下面的jQuery代码怎么办授权请求,以便从不同的端口号

<script> 
$(document).ready(function(){ 
    var ulEmployees = $('#ulEmployee'); 
    var username = $('#uname').val(); 
    var password = $('#pword').val(); 
    username = "male"; 
    password = "male"; 
    $('#btn').click(function() { 
     $.ajax({ 
      type: 'GET', 
      url: 'api/Employees', 
      dataType: 'json', 
      headers: { 
       'Authorization': 'Basic' + btoa(username + ':' + password) 

      }, 

      success: function (data) 
      { 
       ulEmployees.empty(); 
       $.each(data, function (index, val) { 

        var fullName = val.FirstName + ''+val.gender + '' + val.LastName; 
        ulEmployees.append('<li>' + fullName + '</li>'); 

       }); 
      }, 


     }); 
    }); 



    $('#btnclear').click(function(){ 

     ulEmployees.empty(); 

    }); 


    }); 

    }); 

如果我从不同的项目也不会工作

我使用下面的值的URL参数请求

URL的请求:“ http://localhost:53099/api/Employees'

我有当您运行的WebAPI它就会在你的本地IIS托管表达对某些特定的端口号,使用的代码进行授权的Web API

<pre> 
    [BasicAuthentication] 
    public HttpResponseMessage Get(string gender = "ALL") 
    { 
     string username = Thread.CurrentPrincipal.Identity.Name; 
     // string username = "male"; 
     using (EmployeeDBEntities entities = new EmployeeDBEntities()) 
     { 
      //int id = 4; 
      //var entity = entities.Employees.FirstOrDefault(e => e.ID == id); 
      //return Request.CreateResponse(HttpStatusCode.OK, entity); 

      switch (username.ToLower()) 
      { 
       case "male": 
        return Request.CreateResponse(HttpStatusCode.OK, 
         entities.Employees.Where(e => e.Gender.ToLower() == "male").ToList()); 

       case "female": 
        return Request.CreateResponse(HttpStatusCode.OK, 
         entities.Employees.Where(e => e.Gender.ToLower() == "female").ToList()); 

       default: 
        return Request.CreateResponse(HttpStatusCode.BadRequest); 
      } 
     } 
    } 

回答

0

。您将无法从其他端口号访问此API,因为它不在该端口上托管。

+0

实际上,我可以从不同的端口号(使用跨域ajax请求)调用未经授权的呼叫。但从其他端口呼叫时, actionContext.Request.Headers.Authorization将具有值null – rakshi