我目前正在構建一個js chrome擴展,爲此,我需要從一些站點中取消數據。Request.js與Browserify無法正常工作
因此,基於this SO question我發現我可以使用request與Browserify。
我安裝使用npm
既創造了browserify.js
片斷創建我bundle.js
文件(因爲運行終端命令不工作權限的原因),所以我可以運行在客戶端Node js
require
的,我的瀏覽器。
好了,我終於成功地創建bundle.js
文件,並試圖在我的本地服務器上運行它,但它一直給我的CORS錯誤,不返回所需的響應:
提取API無法加載https://somesite/index.html。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此'Origin'http://localhost:8080'不允許訪問。如果一個不透明的響應滿足您的需求,請將請求的模式設置爲'no-cors'以禁用CORS來獲取資源。
一個奇怪的事情是,如果我運行使用node
的「分割」文件從終端直接:
$ node myFileWithRequires.js
它按預期工作,返回的報廢數據。
我在做什麼錯?我如何在客戶端使用request
和browserify
來取消數據?
CODE:
myBrowserifySnippet.js
var browserify = require('browserify');
var b = browserify();
b.add('myrequest.js');
const fs = require('fs');
const writable = fs.createWriteStream('bundle.js');
b.bundle().pipe(writable);
myFileWithRequires.js
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
你不想在客戶端使用'request'。 'request'太重(> 1MB)。相反'xhr'包使用'XMLHttpRequest'實現了請求API的一個子集。旨在與browserify一起使用。 –
您的問題很可能與'somesite'中的CORS設置有關,而不是請求。 'somesite'不允許來自其他網站的請求,並且瀏覽器尊重這一點。 –
@MehdiElFadil,那麼如何在沒有這個「請求」解決方案的情況下廢棄數據?你有什麼主意嗎? – Lioo