当前位置: 首页 > 知识库问答 >
问题:

邮递员如何发送请求?ajax,同源策略

陶锋
2023-03-14

我发现这个非常有用的Chrome扩展叫做Postman。这是一个非常有用的扩展,尤其是在您对RESTful应用程序进行编程时。

我感到困惑的一件事是,这个插件/扩展如何能够在不同的域上成功发送POST请求?

我试着用邮递员这样投票。

提交后,投票实际上被计算在内,但当我尝试使用AJAX和JavaScript执行此操作时,由于浏览器的不同来源策略,它失败了。

这怎么可能呢?

这是我用jQuery写的代码,我在电脑里用过,localhost。

init: function() {
    $.ajax({
        url: 'http://example.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' );
        }
    }
    });
},

共有3个答案

王云
2023-03-14

听起来像是托管投票的网站(“投票.php”脚本)需要设置“访问控制允许来源”标头,以允许从网站列表(或所有网站)发帖。

标头的值为*将允许从任何网站发布:

Access-Control-Allow-Origin: *

i、 e.您可以将以下内容放在vote.php的顶部

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

Chrome扩展和应用程序不受普通网页上相同的安全限制。

其他调试提示:

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

例如,如果您在浏览器中从< code > C:\ my documents \ weboot \ index . htm (Windows)或< code > \ Users \ Joe \ Sites \ index . html (Mac)这样的位置打开本地文件,您的AJAX请求可能无法工作,即使在大多数浏览器中指定了标题。

苹果的Safari对在本地打开的文件几乎没有跨域限制,但Firefox对其允许的内容更为严格,Chrome则处于中间位置。在本地运行web服务器(例如,在上http://localhost/)是一个避免意外行为的好主意。

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

穆轶
2023-03-14

您可以在postman中向发送的Ajax请求添加以下标题。

Content-Type      application/json

X-Requested-With  XMLHttpRequest

截图

仇迪
2023-03-14

Chrome打包应用可以拥有跨域权限。当你安装Postman时,它会提示你这个应用程序将访问任何域。

通过将*/*放置在清单文件的权限部分,您可以做到这一点。

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

 类似资料:
  • 有人能帮助我如何使用以下参数发送POST请求吗: 我试着在《邮递员的身体》中发送一个带有以下参数的: 然而,在发送上述请求时,我得到的位置字符串为null。

  • 我需要和邮递员一起测试我的Web API,我的Web API是post Web服务,它将被其他服务调用。如果有人对此情况有指导方针,我将不胜感激。谢谢你

  • 如果是的话,有谁能向我解释如何做到这一点?

  • 我试图使用Postman而不是Web服务的API文档提供的终端命令来请求数据。 curl命令如下: 我怎么能在邮递员内申请这个?我尝试添加和作为请求参数,但这不起作用

  • 我想用不同的预请求脚本多次运行相同的请求?不使用数据驱动(CSV)测试,我能做什么? 例如,我必须多次运行下面的GET url(每2分钟一次),但每当我运行它时,我都需要进行不同的预请求测试! {{url}}/legacy/COL 在此处输入图像描述