我在同一服务器上有两个单独的应用程序,其中EmberJS试图对我的后端API进行跨域调用。
我设置了后端API,以允许来自该特定来源的跨域请求。但是,有没有办法避免通过这种设置使用JSONP?$.ajax在跨域请求发送之前将其阻止。如果不是,那么CORS的意义何在?我实现了哪个服务器端来接受来自JS前端源的请求?
$.ajax
编辑
AJAX请求:
$.ajax({ url: "api.lvh.me:3000/accounts/login", data: cred, type: "POST", xhrFields: { withCredentials: true }, success: function(response){ alert('succeeded!'); console.log(response); alert(response); }, failure: function(message){ alert("failed"); console.log(message); alert(message); } });
如果启用了CORS,则无需使用JSONP。
Access-Control-Allow-Origin: http://www.example.com
如果在响应中设置了此标头,则普通的XmlHttpRequest将能够像访问相同域一样访问响应。检查此头是否设置正确。
我希望如果您使用jquery,此链接将对您有所帮助。CORSPOST请求可通过纯javascript工作,但为什么不使用jQuery?
更新:示例
var xmlhttp= new XMLHttpRequest(); var url="https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control"; xmlhttp.open("GET",url,false); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); xmlhttp.send();
在任何域中尝试此操作,您都会得到回应。
更新解决方案:
请求网址中未包含“ http://”的URL引起了问题,在前缀“ http://”之前已解决了该问题