从Chrome扩展程序发送POST请求

新詹姆斯

我正在编写一个Chrome扩展程序弹出窗口以登录到我的服务器。扩展有一个基本形式usernamepassword以及submit按钮。

<form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"
           placeholder="Enter email">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
  </div>
  <button type="submit" class="btn btn-primary btn-sm" id="loginButton">Log In</button>
</form>

我使用以下命令使用Insomnia REST客户端测试了服务器的响应:

URL:https://myserver.com/login
标头:Content-Type: application/x-www-form-urlencoded
表单URL编码:email: [email protected] & password: password

在我的Chrome扩展程序中,我编写了一个signin.js脚本来处理按钮单击事件,并将请求发送到我的服务器。

// hardcoded for simplicity of this example
const email = [email protected]
const pwd = password

var button = document.getElementById("loginButton");

button.addEventListener("click", function(){
    const req = new XMLHttpRequest();
    const baseUrl = "https://myserver.com/login";
    const urlParams = `email=${email}&password=${pwd}`;

    req.open("POST", baseUrl, true);
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.send(urlParams);

    req.onreadystatechange = function() { // Call a function when the state changes.
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
            console.log("Got response 200!");
        }
    }
});

然后在我的manifest.json文件上,我具有以下权限:

"permissions": [
    "storage",
    "activeTab",
    "cookies",
    "*://*.myserver.com/*"
  ],

该扩展程序可以正常加载和运行,但是在DevTools的“网络”选项卡上看不到该请求。我可以看到,所有的文件都加载,但是没有请求myserver.com
所请求的网址Request URL: chrome-extension://ahlfehecmmmgbnpbfbokojepnogmajni/sign_in.html?

新詹姆斯

因此,经过一番挖掘,我发现在单击“提交”按钮后,该表单会重新加载弹出窗口,因此,在我有机会看到请求之前,它是令人耳目一新的。
作为解决方案,我必须通过如下编辑函数来禁用重载机制:

button.addEventListener("click", function(e){
    e.preventDefault();

    const req = new XMLHttpRequest();
    const baseUrl = "https://myserver.com/login";
    const urlParams = `email=${email}&password=${pwd}`;

    req.open("POST", baseUrl, true);
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.send(urlParams);

    req.onreadystatechange = function() { // Call a function when the state changes.
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
            console.log("Got response 200!");
        }
    }
});

现在它可以按预期工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Postman Chrome扩展程序发送多部分/混合内容

来自分类Dev

Google Chrome扩展程序HTTPS Ajax请求

来自分类Dev

Chrome扩展程序:如何更改AJAX请求标头中的来源?

来自分类Dev

Chrome扩展程序发布请求未发送数据

来自分类Dev

Dart Chrome扩展程序:如何在onMessage中发送响应?

来自分类Dev

从已加载的iframe将消息发送回Chrome扩展程序

来自分类Dev

如何在Chrome扩展程序中使用AJAX发出POST请求?

来自分类Dev

如何从Chrome扩展程序发送HTTP GET请求?

来自分类Dev

如何从Chrome扩展程序发送HTTP GET请求?

来自分类Dev

从Chrome扩展程序发送电子邮件

来自分类Dev

Chrome扩展程序:如何拦截请求的网址?

来自分类Dev

在Chrome扩展程序中,更改发送到某些域的Ajax请求的引荐来源网址?

来自分类Dev

Chrome扩展程序Ajax发送格式错误的重音字符

来自分类Dev

popup.js中的Chrome扩展POST异步请求

来自分类Dev

从Chrome扩展程序发出HTTP GET请求

来自分类Dev

Chrome扩展程序通过POST请求重定向到本地页面

来自分类Dev

使用Postman Chrome扩展程序发送多部分/混合内容

来自分类Dev

Google Chrome扩展程序可以提交POST / GET请求吗?

来自分类Dev

如何从Chrome扩展程序向本机应用发送消息?

来自分类Dev

Chrome扩展程序发布请求未发送数据

来自分类Dev

Dart Chrome扩展程序:如何在onMessage中发送响应?

来自分类Dev

从已加载的iframe将消息发送回Chrome扩展程序

来自分类Dev

通过chrome扩展程序发送带有post方法的文本

来自分类Dev

如何在Chrome扩展程序中使用AJAX发出POST请求?

来自分类Dev

Chrome扩展程序中的Ajax请求

来自分类Dev

通过Java应用程序和Chrome的POSTMAN扩展发送POST请求时的行为不同。如何调试并查找错误?

来自分类Dev

从Chrome扩展程序到App Engine的POST请求作为GET请求接收

来自分类Dev

监视Google Chrome扩展程序发出的请求

来自分类Dev

无法从Chrome扩展程序发送http请求

Related 相关文章

  1. 1

    使用Postman Chrome扩展程序发送多部分/混合内容

  2. 2

    Google Chrome扩展程序HTTPS Ajax请求

  3. 3

    Chrome扩展程序:如何更改AJAX请求标头中的来源?

  4. 4

    Chrome扩展程序发布请求未发送数据

  5. 5

    Dart Chrome扩展程序:如何在onMessage中发送响应?

  6. 6

    从已加载的iframe将消息发送回Chrome扩展程序

  7. 7

    如何在Chrome扩展程序中使用AJAX发出POST请求?

  8. 8

    如何从Chrome扩展程序发送HTTP GET请求?

  9. 9

    如何从Chrome扩展程序发送HTTP GET请求?

  10. 10

    从Chrome扩展程序发送电子邮件

  11. 11

    Chrome扩展程序:如何拦截请求的网址?

  12. 12

    在Chrome扩展程序中,更改发送到某些域的Ajax请求的引荐来源网址?

  13. 13

    Chrome扩展程序Ajax发送格式错误的重音字符

  14. 14

    popup.js中的Chrome扩展POST异步请求

  15. 15

    从Chrome扩展程序发出HTTP GET请求

  16. 16

    Chrome扩展程序通过POST请求重定向到本地页面

  17. 17

    使用Postman Chrome扩展程序发送多部分/混合内容

  18. 18

    Google Chrome扩展程序可以提交POST / GET请求吗?

  19. 19

    如何从Chrome扩展程序向本机应用发送消息?

  20. 20

    Chrome扩展程序发布请求未发送数据

  21. 21

    Dart Chrome扩展程序:如何在onMessage中发送响应?

  22. 22

    从已加载的iframe将消息发送回Chrome扩展程序

  23. 23

    通过chrome扩展程序发送带有post方法的文本

  24. 24

    如何在Chrome扩展程序中使用AJAX发出POST请求?

  25. 25

    Chrome扩展程序中的Ajax请求

  26. 26

    通过Java应用程序和Chrome的POSTMAN扩展发送POST请求时的行为不同。如何调试并查找错误?

  27. 27

    从Chrome扩展程序到App Engine的POST请求作为GET请求接收

  28. 28

    监视Google Chrome扩展程序发出的请求

  29. 29

    无法从Chrome扩展程序发送http请求

热门标签

归档