当MediaWiki拒绝AJAX请求时更改请求标头

时间:2017-11-30 00:00:17

标签: jquery ajax mediawiki-api

我将下面的AJAX请求发送到MediaWiki API,并在控制台中显示以下消息:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://preview.cs50.io' is therefore not allowed access.我没有做任何恶意的事情,而且我正在使用cloud9 IDE。我尝试将headers选项添加到我的AJAX请求(一个简单的对象,其中一个原始键将我的域作为值),但API也不是这样。

此处的响应表明,出于安全原因,程序员不应该设置origin标头,这是有道理的。不过,我需要访问API。我有任何追索权吗?

这是我第一次使用MediaWiki API和文档。

    $(document).ready(function () {
        // future search parameter provided by user
        var search = "french";
        // AJAX request options for MediaWiki API
        var ajaxOptions = {
            crossDomain: true,
            dataType: "json",
            url: "https://en.wikipedia.org/w/api.php",
            method: "GET",
            data: {
                action:"query",
                list:"search",
                srsearch:search,
                // titlesnippet may be more desirable, try both
                srprop:"snippet",
                srlimit:"50",
                pwpprop:"title",
                // may not be necessary given use of srlimit above, try and see
                pwplimit:"50",
                format:"json"
            }
        };
        // AJAX request
        $.ajax(ajaxOptions).done(updateDOM);

        function updateDOM (json) {
            $("#message").html(JSON.stringify(json));
        }

    });

1 个答案:

答案 0 :(得分:1)

这只是阅读文档的一个教训。 MediaWiki文档将永远存在。在查看其中的许多树时,很容易迷失在API林中,特别是如果您对API的一般经验和/或没有使用MediaWiki的经验有限。

如果以类似于上面的方式发出AJAX / CORS请求,只需添加即可。 。 。

T

到ajaxOptions对象里面的数据对象的末尾,应该解决这个问题。