跨域 JSON Javascript

Posted

技术标签:

【中文标题】跨域 JSON Javascript【英文标题】:Cross domain JSON Javascript 【发布时间】:2018-03-22 17:26:18 【问题描述】:

您好,我正在尝试使用 ONLY javascripthtml 从 URL 获取 JSON 对象。我正在使用以下代码:

<html>
<head>
    <title>Json</title>
    <script src="jquery-3.2.1.min.js"></script>
</head>
    <body>
        <button onclick="myFunction()">Start</button>

        <script>
        function myFunction() 
            jQuery.ajax( 
                url: 'https://iotmmss0018275632trial.hanatrial.ondemand.com/com.sap.iotservices.mms/v1/api/http/app.svc/T_IOT_59824470F0BD12350F22?$format=json',
                type: 'GET',
                crossDomain: true,
                dataType: 'json',
                success: function( response ) 
                    console.log(response);
                , 
                error : function(error) 
                    console.log(error);
                ,  
            );
        
        </script>

    </body>

不出所料,我得到了

加载失败 “网址”: 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此,Origin 'http://localhost' 不允许访问。 响应的 HTTP 状态代码为 401。

我无法配置服务器,我不知道它是否支持 CORS(我是新用户)。我尝试了一个 JSONP 请求并得到了响应状态代码 200 和 JSON,但出现了错误:

Uncaught SyntaxError: Unexpected token :

那我该怎么办?

【问题讨论】:

api有文档吗?是不是说支持jsonp? 我可以获取两种不同格式的数据:xml 和 json。我尝试了 jsonp 请求,因为它是唯一没有收到错误的方法: Failed to load "URL": No 'Access-Control-Allow-Origin' header ... jasonp 仅在 API 支持 jsonp 时有效,它与 vanilla json 不同。如果您无法控制服务器(以添加 cors 支持),您可以创建自己的服务器来代理对 api 的调用... 【参考方案1】:

您应该尝试通过此答案here。它已经详细介绍了这个主题。

P.S.:本应该对此发表评论,但由于我没有所需的声望点而无法评论。

【讨论】:

以上是关于跨域 JSON Javascript的主要内容,如果未能解决你的问题,请参考以下文章

springboot跨域不拦截json拦截文件

JSON:如何进行跨域 JSON 调用

Ajax跨域Json跨域Socket跨域和Canvas跨域等同源策略限制的解决方法

为啥 JSON.parse 会抛出跨域错误?

跨域 JSON - 啥服务器提供源重要吗? [复制]

JSON跨域解决方案收集