如何邮差发送请求? AJAX,同源策略(how Postman send requests? a

2019-08-31 07:01发布

我发现这是非常有用的Chrome扩展叫邮差,这是尤其是当你进入编程RESTful应用程序非常有用的扩展。

有一件事我在困惑是,如何插件/扩展程序能够成功地发送POST请求对不同的域?

我试着使用邮差这样的投票中投票。

提交在此之后,投票实际上是在计算,但是当我试图这样做,使用Ajax和JavaScript,它失败,因为浏览器的产地不同的政策。

这怎么可能呢?

下面是使用jQuery我的代码。 我曾经在我的电脑虽然,本地主机。

init: function() {
    $.ajax({
        url: 'http://domain.com/vote.php',
        type:'POST',
        dataType: 'html',
        data: {
            id: '1'
        },
        success: function(data) {
        if ( data == 'voted' ) {
            $('.set-result').html( 'you already voted. try again after 24 hours' );
        } else {
            $('.set-result').html( 'successfully voted' );
        }
    }
    });
},

Answer 1:

Chrome封装应用程序可以跨域权限。 当您安装邮差它promts你这个应用程序将访问任何域。

通过将*/*permissions清单文件的部分,你可以做到这一点。

在这里阅读更多: https://developer.chrome.com/extensions/xhr.html



Answer 2:

您可以在下面的标题添加到邮递员发送Ajax请求。

Content-Type      application/json

X-Requested-With  XMLHttpRequest

截图

感谢 猎户座



Answer 3:

听起来像承载民意调查(以下简称“vote.php”脚本)需要有一个“访问控制允许来源”头设置为允许从网站(或所有网站)名单张贴在网站。

*为标题的值将允许来自任何网站上公布:

Access-Control-Allow-Origin: *

即你可以把下面的vote.php顶部

header('Access-Control-Allow-Origin: *');

Chrome浏览器扩展程序和应用,不受放置在正常的网页相同的安全限制。

额外的调试技巧:

如果你想从你在浏览器中的本地文件系统上打开网页访问远程服务,你可能会发现你的浏览器应用不同的安全规则,他们比它的文件从Web服务提供。

例如,如果您喜欢的区位打开本地文件C:\MyDocuments\weboot\index.htm (Windows)或\Users\joe\Sites\index.html您的浏览器(苹果机)您的AJAX请求可能无法正常工作,甚至与头在大多数浏览器中指定。

苹果的Safari浏览器适用于几乎没有跨域限制的文件本地打开但Firefox是更为严格的关于什么是允许,使用Chrome中间的某个位置。 运行Web服务器本地(上例如http://localhost/ )是为了避免意外的行为,是一个好主意。

此外,提供的函数来处理Ajax请求(如AngularJS)可能需要其它标题其他库到默认服务器上设置。 通常你可以看到在浏览器中调试控制台失败的原因。



文章来源: how Postman send requests? ajax, same origin policy