ご存じのとおり、 $.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 拡張機能を作成していますが、Web サイトにリクエストを送信する必要があります。まず、上記のメッセージも表示されることを期待していました。しかし、うまく機能しているのを見ると混乱しました。
まず、それは良さそうです、それは働いていて、私は欲しいものを持っています. しかし、それは恐ろしいことです。誰もがそのような方法 (単純なスクリプトのみ) を使用して、私のサイトを攻撃し、そのデータを取得できます。
もちろん、グラブは他の方法でも発生する可能性があります。私はAPIプログラミングとChrome拡張が初めてです。誰か道を教えてくれませんか?
マニフェスト.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);
}});
}