跨源策略和 Fiddler JSON 调试

Dio*_*Dan 1 javascript jquery json google-chrome fiddler

我正在使用 JSON 数据开发现代 web 应用程序。我发现了以下关于使用名为 Fiddler 的工具模拟 JSON 数据的博客文章

我正在使用 Notepad++ 进行本地开发,主要在 Chrome 上进行测试(我最终会专注于更多浏览器)。我有一个主 HTML 文件“index.html”,我使用的文件结构如下所示:

index.html

    assets

        /js

        /css

        /img
Run Code Online (Sandbox Code Playgroud)

我通常通过从 Notepad++ 启动 Chrome 中的 index.html 文件来运行我的测试。但是,因为我想使用 Fiddler 的 JSON “欺骗”功能,所以遇到了跨域策略限制。我让 Fiddler 的自动回复工具匹配给定的 URI(这里是http://server.anywhere.com/test),然后返回一个预制在文件中的 JSON 响应。

XMLHttpRequest 无法加载http://server.anywhere.com/test。Access-Control-Allow-Origin 不允许 Origin null。

代码非常简单(jQuery 1.9.1):

$(document).ready(function(){
    $.getJSON("http://server.anywhere.com/test", function(data) {
        $.each( data, function( i, item ) {
            console.log('Item number: ', i);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?也许是 Chrome 中的开发工具?

谢谢!

Eri*_*Law 5

为此,您不需要另一个网络服务器,您可以使用 Fiddler 的 AutoResponder 来完成这一切。只需编辑有问题的规则,即可获得Access-Control-Allow-Origin包含请求站点来源值的响应标头。

如果您需要执行“非简单”(CORS术语)的要求,添加规则像这样

Method:OPTIONS PartialTargetURL 用一个动作 *CORSPreflightAllow

到规则列表,规则返回目标响应之前。此规则将导致 Fiddler 对 XMLHttpRequest 对象发送的预检请求做出肯定响应。