Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何访问托管在其他域中的RESTAPI数据。跨域问题_Jquery_Ajax_Api_Rest_Cross Domain - Fatal编程技术网

Jquery 如何访问托管在其他域中的RESTAPI数据。跨域问题

Jquery 如何访问托管在其他域中的RESTAPI数据。跨域问题,jquery,ajax,api,rest,cross-domain,Jquery,Ajax,Api,Rest,Cross Domain,我可以通过JQuery成功地从本地Rest api访问数据,但是当我试图通过JQuery从远程Rest api(托管在其他域)访问数据时,我得到了未定义的错误。 我如何解决跨域问题 这就是我通过JQuery使用的方式 function GetCompanyName(id) { jQuery.support.cors = true; $.ajax({ url: 'http://novacompanysvc.azurewebsites.net/api/companie

我可以通过JQuery成功地从本地Rest api访问数据,但是当我试图通过JQuery从远程Rest api(托管在其他域)访问数据时,我得到了未定义的错误。 我如何解决跨域问题

这就是我通过JQuery使用的方式

function GetCompanyName(id) {
    jQuery.support.cors = true;
    $.ajax({
        url: 'http://novacompanysvc.azurewebsites.net/api/companies',
        type: 'GET',
        data:{ id:id },
        dataType: "text/xml",
    success: function (data) {
       if (window.DOMParser)
          {
          parser=new DOMParser();
          xmlDoc=parser.parseFromString(data,"text/xml");
          }
        else // Internet Explorer
          {
          xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async=false;
          xmlDoc.loadXML(data); 
          }
       WriteResponse(data);
     },
     error: function (x, y, z) {
            alert('error');
     }
  });
}

发生此错误是因为您正在访问的API端点未实现。 如果在Chrome中运行代码并查看控制台,您将看到一个错误:

XMLHttpRequest无法加载http://novacompanysvc.azurewebsites.net/api/companies?id=1. 起源http://fiddle.jshell.net 访问控制允许源站不允许使用。


解决方案是更改API端点,以将
访问控制允许来源
头设置为通配符
*
或使用JavaScript代码的页面将从中提供服务的域。

我也面临同样的问题

现在我已经解决了。 假设您有两个域。 域1和域2

你可以使用这个技巧


在domain1中使用服务器端脚本创建中间层,您可以使用java、PHP等从domain2获取数据,然后在domain1中创建rest服务,并在domain1中使用rest服务。

我也面临这个问题。我会用螺丝钉把它修好

避免混合内容阻塞是将所有内容作为HTTPS而不是HTTP提供

对于您自己的域将所有内容作为HTTPS提供,并修复您的链接。
你把:http//改为https//


对于其他域使用站点的HTTPS版本(如果可用)。如果HTTPS不可用,您可以尝试联系域名,询问他们是否可以通过HTTPS提供内容。

谢谢。如何更改API端点以设置访问控制允许原点?由于我是JQuery方面的新手,您能通过提供示例代码给我一个解决方案吗?API服务器是用什么语言或框架编写的?根据这一点,您必须对服务器代码进行一些更改。