当前位置: 首页 > 面试题库 >

CORS-通过允许服务器上的原始不使用JSONP的跨域AJAX

陆俊捷
2023-03-14
问题内容

我在同一服务器上有两个单独的应用程序,其中EmberJS试图对我的后端API进行跨域调用。

我设置了后端API,以允许来自该特定来源的跨域请求。但是,有没有办法避免通过这种设置使用JSONP?$.ajax在跨域请求发送之前将其阻止。如果不是,那么CORS的意义何在?我实现了哪个服务器端来接受来自JS前端源的请求

编辑

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://”之前已解决了该问题



 类似资料:
  • 问题内容: 我知道以前曾问过这个问题,但是没有一个答案对我有用!我正在做一个学校项目,我想获取学校服务器上动态计划文件返回的HTML(为我的项目解析)。 我想要HTML的页面是:https : //telaris.wlu.ca/ssb_prod/bwckschd.p_disp_dyn_sched 我认为未为学校服务器文件启用CORS,并且我不知道它是否支持JSONP … 如何设置跨域请求以从该页面

  • 问题内容: 除了JSONP,为什么要遵循相同的域策略? 问题答案: 出于安全原因,已实施“同源起源策略”;引用维基百科的相关句子: 这种机制对现代Web应用程序具有特殊的意义,因为Web服务器广泛依赖于HTTP cookie来维护经过身份验证的用户会话,因为服务器基于HTTP cookie信息进行操作以揭示敏感信息或执行状态更改操作。 必须在客户端维护不相关站点提供的内容之间的严格分隔,以防止丢失

  • 问题内容: 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我在脚本顶部仅添加了以下两行,以使它们能够做到: 现在我的问题是:这里是否遗漏了任何安全方面的考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,什么是更好的解决方案? 感谢您的回复。 问题答案: 如上所述,任何人都可以随时向您的页面发送请求:因此,您需要考虑的主

  • 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展<我只是在我的脚本顶部添加了这两行,让他们完成这项任务: 现在我的问题是:这里有我错过的任何安全考虑吗?这个简单的解决方案会产生严重的问题吗? 如果是,更好的解决方案是什么? 感谢您的回复。

  • 问题内容: 我们有一个配置了SSL的网站,可托管WCF服务。服务的绑定具有,并且通信使用JSON序列化。 当我们从http请求此服务时,它返回JSONP,但是当使用HTTPS请求该服务时,它仅返回JSON。无论哪种方式我都需要JSONP,请帮忙。 当前配置是这样的: 问题答案: 如果使用此配置会发生什么: 问题是,如果要同时通过HTTP和HTTPS调用服务,则必须提供两个端点-一个端点用于HTTP