邮差怎么发送请求? ajax,同源策略
我发现这个非常有用的扩展称为邮递员,这是一个非常有用的扩展,特别是当您编程RESTful应用程序时。邮差怎么发送请求? ajax,同源策略
我很困惑的一件事是,这个插件/扩展如何能够在不同的域上成功发送POST请求?
我尝试投票使用这样的邮差投票。
提交后,表决实际上被计入,但是当我尝试使用ajax和javascript时,由于浏览器的原始策略不同而失败。
这怎么可能?
这是我的代码使用jQuery。我在我的电脑中使用过,localhost。
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打包的应用程序可以具有跨域权限。当您安装Postman时,它会提示您此应用将访问任何域。
通过将*/*
放置在清单文件的permissions
部分中,您可以执行此操作。
这怎么可能?网站本身是否也必须允许'CORS'? – CodyBugstein
@Imray不需要CORS标题,就像服务器程序或curl一样。 – Mohsen
因此,基本上,Chrome应用程序不受Cross Origin安全性限制?因此,Chrome应用可以访问我的银行Cookie或我的Facebook登录信息? – CodyBugstein
听起来像承载民意调查(以下简称“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
(Mac)等位置打开本地文件,则即使使用大多数浏览器中指定的标头,您的AJAX请求也可能无法正常工作。
Apple的Safari几乎不对本地打开的文件应用跨域限制,但Firefox对其允许的内容要求更严格,Chrome位于中间位置。在本地运行Web服务器(例如,在http://localhost/
)是避免意外行为的好主意。
此外,其他提供处理Ajax请求函数的库(例如AngularJS)可能需要在服务器上默认设置其他头文件。您通常可以在浏览器调试控制台中查看失败的原因。
看起来好像扩建工程通过张贴到getpostman.com,而不是你的目标域(CORS使用),getpostman.com的服务器然后发出请求并返回响应。 https://github.com/a85/POSTMan-Chrome-Extension/blob/master/chrome/js/requester.js#L457 –
这似乎是合法的,我会通读他们的代码然后,我可能会尝试拿出同样的解决方案。 –
但是请注意,要在IE中实现CORS,您必须通过包含替代传输来更改jQuery。 IE7根本不支持CORS。 –