【发布时间】:2015-01-15 21:16:28
【问题描述】:
我正在尝试通过 curl 请求加载 JS 文件并将其加载到我的应用程序中。
我有类似的东西
加载JS.php
$c = curl_init('http://partnerSite.com/test.js');
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$jsFile = curl_exec($c);
//I have tried this, give me error
echo $jsFile;
//I have tried this and give me error too.
header('Content-Type: application/json');
echo json_encode($jsFile);
curl_close($c);
在我的 JS 中
var url = '/loadoutSideJS'; redirect to loadJS.php
$http({
url:url,
method:'GET',
dataType:'json'
}).success(function(data) {
$.getScript(data);
})
我在控制台中收到 414 request-url too large 错误
由于某种原因,响应被视为纯文本而不是 js 文件。无论如何我可以将响应视为 JS 来加载外部 JS 文件吗?非常感谢!
更新
加载JS.php
$c = curl_init('http://partnerSite.com/test.js');
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$jsFile = curl_exec($c);
//I have tried this and give me error too.
header('Content-Type: application/javascript');
echo $jsFile;
curl_close($c);
在我的 JS 中
var url = '/loadoutSideJS'; redirect to loadJS.php
$http({
url:url,
method:'GET'
}).success(function(data) {
$.getScript(data);
})
【问题讨论】:
-
为什么要在第二个请求中获取第一个请求的有效负载?如果它是完整的响应正文,我也不明白为什么需要对 URL 进行 JSON 编码;这将使 url 不是 url,而是以
"开头的东西...... -
@dan:可能是尝试通过 OP 的服务器代理 JS 脚本以绕过同源限制。但是 json_encoding 输出只是多余的,因为您可以首先将其作为 text/javascript 发送出去。
-
@MarcB:但脚本不需要遵循 SOP,所以不可能。回声后的标题和未注释的 JS 注释告诉我有很多原因这不起作用,所以谁知道...
-
请更新答案,我希望我解决了你们提到的问题。但它仍然不适合我。 (同样的错误)
标签: javascript php angularjs curl