我发现这是非常有用的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' );
}
}
});
},
Chrome封装应用程序可以跨域权限。 当您安装邮差它promts你这个应用程序将访问任何域。
通过将*/*
中permissions
清单文件的部分,你可以做到这一点。
在这里阅读更多: https://developer.chrome.com/extensions/xhr.html
您可以在下面的标题添加到邮递员发送Ajax请求。
Content-Type application/json
X-Requested-With XMLHttpRequest
截图
感谢 猎户座
听起来像承载民意调查(以下简称“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)可能需要其它标题其他库到默认服务器上设置。 通常你可以看到在浏览器中调试控制台失败的原因。