2015-05-07 12 views
8

Chúng tôi đang làm việc với Atom Shell (Hiện nay gọi là electron) để quấn một ứng dụng web như ứng dụng máy tính để bàn và gặp khó khăn làm ajax miền chéo gọi do hạn chế CORS.tên miền chéo Ajax Gọi trong Atom Shell

Chúng tôi cũng đã thử nw.js (trước đây gọi là Node-Webkit) và chúng tôi không gặp sự cố khi thực hiện cuộc gọi ajax với tên miền chéo. Atom Shell (Electron) có hạn chế các cuộc gọi tên miền chéo theo mặc định không?

Trả lời

14

Nếu trang web được tải ở chế độ "tệp: //" và không được máy chủ http phân phát, bạn có thể thực hiện cuộc gọi ajax theo mặc định.

Nếu bạn vẫn còn có những rắc rối với những hạn chế CORS, bạn có thể thiết lập tùy chọn này để các đối tượng trình duyệt cửa sổ:

var BrowserWindow = require('browser-window'); 
var win = new BrowserWindow({ 
    'web-preferences': {'web-security': false} 
}); 
+0

này sẽ tắt tất cả các web-an ninh, có đúng không? Tôi tự hỏi nếu có một cách để thêm một tên miền như là nguồn gốc "đáng tin cậy" thay vì ký tự đại diện toàn cầu này. – masi

+7

Lưu ý cú pháp đã thay đổi cho điều này, các dấu gạch ngang đã bị xóa. Bây giờ nó sẽ là 'webPreferences' và' webSecurity' – Jerry

6

Có hai vấn đề ở đây

CORS hạn chế, trong đó ngăn chặn khách hàng từ khởi một yêu cầu và tiêu đề Access-Control-Allow-Origin được đặt bởi máy chủ.

Vấn đề đầu tiên được giải quyết như đã đề cập bằng cách đặt các tùy chọn bảo mật web trên đối tượng cửa sổ Trình duyệt.

"web-preferences" : { 
    "web-security" : false 
}, 

Vấn đề thứ hai theo đó Electron thực sự gửi 'tệp: //' làm giá trị gốc trong yêu cầu không có giải pháp theo như tôi có thể nói. Tùy chọn của bạn là cho phép 'tệp: //' hoặc '*' trong tiêu đề Access-Control-Allow-Origin (phía máy chủ).

tôi đã thực sự yêu cầu thiết lập nguồn gốc trên các yêu cầu được cho phép nhưng tôi nghi ngờ nó sẽ không được như mong đợi. cú pháp cập nhật

3

Giải pháp:

var BrowserWindow = require('browser-window'); 
var win = new BrowserWindow({ 
    webPreferences: {webSecurity: false} 
}); 
Các vấn đề liên quan