Javascript 如何在AJAX请求中设置CORS

Javascript 如何在AJAX请求中设置CORS,javascript,jquery,ajax,Javascript,Jquery,Ajax,我一直在开发一个个人网络应用程序,遇到了一个小问题。我的API调用只适用于某些API,而不适用于其他API。对于那些它不工作的,我通常会收到这样的错误消息 XMLHttpRequest cannot load https://api.meetup.com/2/cities. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not all

我一直在开发一个个人网络应用程序,遇到了一个小问题。我的API调用只适用于某些API,而不适用于其他API。对于那些它不工作的,我通常会收到这样的错误消息

XMLHttpRequest cannot load https://api.meetup.com/2/cities. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
在做了一些研究之后,我知道这与CORS没有被设置有关。我想知道在发出AJAX请求时是否可以在客户机中设置此选项。我目前的做法是这样的

var handleRequest = function(request){
  $.ajax({
  type: "GET",
  url: request,
  success: function(data) {
    var rawJSON = JSON.stringify(data, null, 2);
    editor.setValue(rawJSON);
  },
  dataType: 'json'
});

根据他们的文档,他们支持JSONP


这是您处理CORS的方法。

根据他们的文档,他们支持JSONP



这是您绕过CORS的方法。

您试图访问的服务器必须授予您访问它的权限。IT管理员必须为您提供一个URL,授予您访问其外部服务器的权限。您尝试访问的服务器必须设置CORS

您试图访问的服务器必须授予您访问权限。IT管理员必须为您提供一个URL,授予您访问其外部服务器的权限。您尝试访问的服务器必须设置CORS

从中请求数据的服务器必须启用CORS。在客户端没有办法做到这一点。没有,因为这将使跨源请求限制完全没有意义。那么像postman这样的应用程序如何工作呢?它们是为用户进行API调用而构建的。应用程序与通过浏览器访问的网站没有相同的限制。在这种情况下,我可以将其设置为向自己的服务器发送请求,然后进行API调用吗?您请求数据的服务器必须启用CORS。在客户端没有办法做到这一点。没有,因为这将使跨源请求限制完全没有意义。那么像postman这样的应用程序如何工作呢?它们是为用户进行API调用而构建的。应用程序与使用浏览器访问的网站没有相同的限制。在这种情况下,我是否可以将其设置为向自己的服务器发送请求,然后进行API调用?这只是我的应用程序将进行的API调用的一个示例。我只是做一些像邮递员一样的东西作为一种乐趣。我现在意识到我可能问错了问题。如果提供正确的身份验证详细信息,是否可以使我能够从任何api调用接收响应?e、 g.支持jsonp的API和其他支持json的API?这完全取决于您试图调用的服务。如果服务支持并允许使用JSONP,那么您就可以了(因为它基本上以脚本的形式加载响应)。在其他情况下,您需要访问服务器代码,以使浏览器对响应感到满意,因为浏览器将拒绝不匹配的源标题的响应。是否只有在浏览器上运行的应用程序才会出现此问题?例如,我可以很容易地使用curl进行相同的调用并获得响应,而如果我在浏览器中使用我的应用程序,它将失败一些。是的。这是浏览器的一项安全功能,旨在保护用户免受某些攻击。在这种情况下,我的问题的解决方案似乎是从服务器上的应用程序调用API,然后从浏览器向我的应用程序发出请求。唯一的问题是,我的服务器的IP将是进行所有API调用的IP,这意味着它可能会被阻止。我希望IP用户是发出请求的用户。这只是我的应用程序将发出的API调用的一个示例。我只是做一些像邮递员一样的东西作为一种乐趣。我现在意识到我可能问错了问题。如果提供正确的身份验证详细信息,是否可以使我能够从任何api调用接收响应?e、 g.支持jsonp的API和其他支持json的API?这完全取决于您试图调用的服务。如果服务支持并允许使用JSONP,那么您就可以了(因为它基本上以脚本的形式加载响应)。在其他情况下,您需要访问服务器代码,以使浏览器对响应感到满意,因为浏览器将拒绝不匹配的源标题的响应。是否只有在浏览器上运行的应用程序才会出现此问题?例如,我可以很容易地使用curl进行相同的调用并获得响应,而如果我在浏览器中使用我的应用程序,它将失败一些。是的。这是浏览器的一项安全功能,旨在保护用户免受某些攻击。在这种情况下,我的问题的解决方案似乎是从服务器上的应用程序调用API,然后从浏览器向我的应用程序发出请求。唯一的问题是,我的服务器的IP将是进行所有API调用的IP,这意味着它可能会被阻止。我希望用户IP是发出请求的人。