cách tránh chính sách tên miền chéo trong jquery ajax để sử dụng dịch vụ wcf?cách tránh chính sách tên miền chéo trong jquery ajax để sử dụng dịch vụ wcf?
Tôi cần phải làm gì trong web.config cho chính sách tên miền chéo?
cách tránh chính sách tên miền chéo trong jquery ajax để sử dụng dịch vụ wcf?cách tránh chính sách tên miền chéo trong jquery ajax để sử dụng dịch vụ wcf?
Tôi cần phải làm gì trong web.config cho chính sách tên miền chéo?
Nếu bạn muốn gọi tên miền chéo từ javascript đến WCF, bạn phải sử dụng JSONP. Để thêm hỗ trợ JSONP vào WCF, bạn phải xác định nó trong WebHttpBinding
. Cấu hình sẽ trông giống như:
<bindings>
<webHttpBinding>
<binding name="crossDomain" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
</binding>
<behaviors>
<endpointBehavior>
<behavior name="restBehavior">
<webHttp />
</behavior>
</endpointBehavior>
</behaviors>
<services>
<service name="...">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="crossDomain"
contract="..." behaviorConfigurations="restBehavior" />
</service>
</services>
Để kiểm tra phần jQuery ví dụ this article.
Tôi đã làm cho nó hoạt động bằng cách sử dụng cài đặt JQuery (1.5.1) $ .ajax CrossDomain được đặt thành true.
Điều tôi chưa hiểu là lý do tại sao khi sử dụng thuộc tính [ScriptMethod (ResponseFormat = ResponseFormat.Json)] trên dịch vụ WCF (.NET4), cuộc gọi thành công mà không có thiết lập crossdomain (tới web. config và $ .ajax) và khi sử dụng thuộc tính [WebGet (ResponseFormat = WebMessageFormat.Json)] nó yêu cầu các thiết lập crossdomain trong webconfig và $ .ajax call. Nếu tôi sử dụng thuộc tính WebGet mà không có cài đặt tên miền chéo, tôi sẽ gặp lỗi "Phương thức không được phép".
đang WCF được sử dụng:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)] // requires crossdomain settings
//[ScriptMethod(ResponseFormat = ResponseFormat.Json)] // no crossdomain settings required
public string GetNumber(string id)
{
return "query response on id: " + id;
}
bất kỳ ý tưởng?
chrome/firefox sẽ không cho phép tôi làm điều này cho đến khi tôi đặt một cách rõ ràng
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
trong các cuộc gọi của tôi
hi, tôi đã tạo ra một dịch vụ của loại post.When tôi đang gửi dữ liệu từ jquery ajax nó không hoạt động. Phương pháp loại GET hoạt động tốt. – user601367
Các cuộc gọi tên miền chéo/JSONP chỉ hoạt động với HTTP GET. Thông tin thêm tại đây: http://stackoverflow.com/questions/2699277/post-data-to-jsonp –
cách thực hiện yêu cầu 'POST domain'' POST qua ajax? –