簡體   English   中英

Access-Control-Allow-Origin未檢查Chrome擴展名

[英]Access-Control-Allow-Origin not checking in chrome extension

如您所知,當將$ .ajax(..)請求發送到另一個域(跨域)時,大多數瀏覽器會拋出如下異常:

 XMLHttpRequest cannot load http://mysite.com/test.php. Origin
 http://127.0.0.1:8888 is not allowed by Access-Control-Allow-Origin.

我正在創建chrome擴展程序,它應該向我的網站發送請求。 首先,我也希望看到上述消息。 但是當我看到它工作正常時,我感到困惑。

首先,它看起來不錯,可以正常工作,我有想要的東西。 但這可能是可怕的。 每個人都可以使用這種方式(僅是一個簡單的腳本)來攻擊我的網站並獲取其數據。

當然,搶奪也可以通過其他方式發生。 我是api編程和chrome擴展的新手。 有人可以給我指路嗎?

manifest.json

{
  "manifest_version": 2,
  "name": "MyTestExtension",
  "description": "this extension is for test",
  "version": "1.0",
  "icons": {
    "128": "icon.png"
  },
  "browser_action": {
    "default_icon": "icon.png" 
  },
  "permissions": [
    "tabs" ,
    "*://*/*"
  ],
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["jquery-1.7.2.min.js","content_script.js"],
      "run_at": "document_end"
    }
  ]  
}

content_script.js

$(document).ready(function(){
    $('html').mouseup(function() {
        var selectedText = getSelectedText();
        if(selectedText > ''){
            my_syncTest(selectedText)      // here : selected test send to my site
        }
    });

    function getSelectedText() {
        if (window.getSelection) {
            var selection = window.getSelection().toString();
            if(selection.trim() > ''){
                return selection;
            }
        } else if (document.selection) {
            var selection = document.selection.createRange().text;
            if(selection.trim() > ''){
                return selection;
            }
        }
        return '';
    } });


function my_syncTest(word){
var qs = 'word='+word+'&header=555&simwords=1'; 
$.ajax(
  {
   type: "POST", 
   url: 'http://mysite.com/test.php',
   dataType: 'json', 
   data : qs, 

  success:function(res){
    console.log(res.success +" - "+ res.idWord + " - " + res.header +" - " + res.meaning);
  }});
}

來自擴展的XMLHttpRequests起作用,因為您在清單中定義了以下權限:

"permissions": [
    "*://*/*"
]

當用戶安裝您的擴展程序時,系統會通知他該擴展程序可以訪問所有站點上的數據。 我更喜歡只包含您需要的確切網站,而不是通配符。

http://developer.chrome.com/extensions/xhr.html

此機制是為了保護用戶,而不是保護您的站點。 如果您不希望所有人使用您的API,請使用API​​密鑰或研究oAuth:

http://en.wikipedia.org/wiki/OAuth

如果您想了解有關跨源請求的更多信息:

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

https://developer.mozilla.org/zh-CN/docs/HTTP/Access_control_CORS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM