2017-06-12 15 views
5

Tôi đã sử dụng hai dự án cho trang web của mình. Một cho dự án Mvc và dự án Api. Tôi đã thêm bên dưới mã trong tập tin web.config mà là ở dự án Api, phương phápTiêu đề không được chuyển vào ajax bằng cách sử dụng tên miền chéo

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 

hành động như dưới đây mà là ở dự án Api,

[HttpPost] 
[Route("api/ajaxapi/caselistmethod")] 
public List<CaseValues> AjaxCaseListMethod() 
{ 
      List<CaseValues> caseList = new List<CaseValues>(); 
      return caseList; 
} 

và gọi ajax như sau đó là trong MVC dự án,

$.ajax({ 
      type: "POST", 
      url: "http://localhost:55016/api/ajaxapi/caselistmethod", 
      beforeSend: function (request) { 
       request.setRequestHeader("Authorization", getCookie("Token")); 
      }, 
      success: function (response) { 
      } 
}); 

Nhưng chưa thấy lỗi như dưới đây,

OPTIONS http://localhost:55016/api/ajaxapi/caselistmethod 405 (Phương pháp không được phép) XMLHttpRequest không thể tải http://localhost:55016/api/ajaxapi/caselistmethod. Phản hồi cho preflight có mã trạng thái HTTP không hợp lệ 405

nhưng không có Đầu trang hoạt động tốt. Tôi cũng cần phải vượt qua tiêu đề. Vì vậy, xin vui lòng cho bất cứ đề nghị.

Cảm ơn ...

Trả lời

3

Phương thức tùy chọn cần được bật để yêu cầu trước "tùy chọn" trước chuyến bay thành công, bắt buộc phải gửi tiêu đề ủy quyền.

Không rõ cách bạn bật tiêu đề trong Web.Config hoặc những gì bạn sử dụng để lưu trữ dịch vụ của mình vì vậy thật khó để đề xuất giải pháp chính xác. Nếu bạn đang sử dụng IIS kiểm tra - enabling cross-origin resource sharing on IIS7 để đảm bảo OPTIONS không bị chặn bởi IIS. Bạn có thể cần phải loại bỏ trình xử lý hiện có hoặc bật OPTIONS.

Hoặc bạn có thể sử dụng thuộc tính EnableCors trên phương pháp để cho phép "tùy chọn" được bật cho tuyến đường đó.

+0

Cuối cùng có giải pháp và bạn tiết kiệm thời gian của tôi .. cảm ơn @Alexei –

1

Chrome sẽ gửi yêu cầu preflight (OPTIONS phương pháp) để tìm tiêu đề CORS và sau đó gửi yêu cầu POST.

Nhưng bạn không cho phép OPTION phương pháp.

Hãy thử

Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS 
+1

Tôi không tin 'Access-Control-Allow-Methods' tác động 405 từ OPTIONS yêu cầu riêng của mình. Bạn không cần phải thêm "OPTIONS" vào danh sách này vì không thể thực hiện cuộc gọi qua OPTIONS miền (cuộc gọi OPTIONS trước chuyến bay không được coi là "tên miền chéo" bởi trình duyệt do chính trình duyệt tạo và không phải mã của khách hàng) –

+0

Không có gì xảy ra sau khi cho phép phương pháp OPTIONS. @ S.Dev –

Các vấn đề liên quan