3

からの応答を取得するには、以下のコードを見つけてくださいconfluence rest api

<script type="text/javascript" src="Scripts/jquery.min.js"></script>
<script>
    $.ajax({
        type: "GET",
        url: "https://blog.xxxxx.com/rest/api/content?type=blogpost&spaceKey=xxxxx&expand=space,body.view,version,container",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        jsonp: 'jsonp-callback',
        async: false,
        success: function (result) {
            console.log(result);
        },
        error: function (xhr, errorText) {
            console.log('Error ' + xhr.responseText);
        }
    });
</script>

this と thisを参照として参照しましたが、問題は解決しませんでした。コンソールでエラーが発生していますRefused to execute script from 'https://blog.xxxxx.com/rest/api/content?type=blogpost&spaceKey=xxxxx&…d=space,body.view,version,container&callback=jsonpCallback&_=1413187692508' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled

type:postで試しました。これらのどれも私にとってはうまくいきませんでした。dataType:jsondataType:jsonpjsonp: jsonp-callback

Chrome 開発者ツールのタブでNetwork応答を取得confluenceしていますが、コンソールまたはページに同じものを出力しません。

を使用すると、クロムdataType:jsonでエラーが発生します。XMLHttpRequest cannot load https://blog.xxxxx.com/rest/api/content?type=blogpost&spaceKey=xxxxx&expand=space,body.view,version,container. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost' is therefore not allowed access

更新IIS での MIME タイプapplication/jsonの追加jsonが機能しません。

更新されたコード

$.ajax({
            type: 'GET',            
            url: 'https://blog.xxxxx.com/rest/api/content?type=blogpost&spaceKey=xxxxx&expand=space,body.view,version,container',   
            dataType: 'jsonp',
            xhrFields: {                
                withCredentials: false
            },
            headers: {
                "Accept" : "application/json; charset=utf-8",
                "Content-Type": "application/javascript; charset=utf-8",
                "Access-Control-Allow-Origin" : "*"
            },
            success: function (result) {
                $('#blog').html(result);
            },
            error: function (xhr, errorText) {
                console.log('Error ' + xhr.responseText);
            }
        });

それでも同じエラーが発生します。

レスポンスボディ

results: [{id:3342352, type:blogpost, title:The stocks that are set to fly (or crash),…},…]
0: {id:3342352, type:blogpost, title:The stocks that are set to fly (or crash),…}
1: {id:3833861, type:blogpost, title:Before earnings season, it's downgrade season,…}
2: {id:3833876, type:blogpost, title:Petrobras - what goes up, must come down,…}
3: {id:3833882, type:blogpost, title:Fishing for Income in the FTSE 100,…}
4: {id:4489219, type:blogpost, title:A Ray of Light Among the Gathering German Gloom,…}
5: {id:4489234, type:blogpost, title:Insider trading falls as buybacks dominate share prices,…}
6: {id:4489241, type:blogpost, title:El Clasico: Nike vs Adidas,…}
7: {id:4489248, type:blogpost, title:Dollar uncertainty exposes investors' complacency,…}
8: {id:4489254, type:blogpost, title:Worst yet to come for the Australian miners,…}
9: {id:4489258, type:blogpost, title:Using Aggregate List Views to Find Lurking Risks,…}
size: 10
start: 0

MIME type ('application/json') is not executable, and strict MIME type checking is enabledでの問題を解決するにはどうすればよいですconfluence rest apiか???

4

2 に答える 2

3

https://blog.xxxxx.com/rest/api/content?type=blogpost&spaceKey=xxxxx&expand=space,body.view,version,containerJSONを返しています。

jQueryにJSONPとして読み取るように指示しています。

JSON と JSONP は異なります。

JSONP で応答するようにサーバーを変更するか、JSON を予期するように JavaScript を変更する必要があります。

要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません

JSON を予期するようにクライアントを変更する場合は、サーバー ( blog.xxxxx.com) も変更して、同一生成元ポリシーを無視する許可をブラウザーに与える CORS ヘッダーを提供する必要があります。

于 2014-10-13T10:06:53.280 に答える
1

私はドキュメントでこれを見ます:

GET でのみ使用できます。返されるコンテンツ タイプは application/javascript でなければなりません。

JSONPが有効になっていることも確認してください

于 2014-10-13T10:05:43.620 に答える