postman 的跨域请求原理?

2015-09-10 15:35:00 +08:00
 hobbyliu

postman js 跨域请求原理是啥?

13385 次点击
所在节点    程序员
7 条回复
fengliu222
2015-09-10 15:53:47 +08:00
Chrome 插件内木有同源策略的限制,所以不跨域。
yunfeifan
2015-09-10 16:07:03 +08:00
@fengliu222 有权限限制的,不过可以申请到跨域(跨指定域名或所有)
hobbyliu
2015-09-10 16:09:32 +08:00
@yunfeifan 确实有限制,但是如何申请, header 里面 添加申请吗?
yunfeifan
2015-09-10 16:18:17 +08:00
@hobbyliu manifest 文件中
"permissions": [
"http://www.google.com/"
],


跨域允许设置可以使用完整域名, 例如:
"http://www.google.com/"
"http://www.gmail.com/"
或者使用模式匹配, 例如:
"http://*.google.com/"
"http://*/"
模式匹配"http://*/" 表示可以发起到所有域的 HTTP 请求. 注意在这里, 模式匹配有点像内容脚本匹配, 但是这里的任何域名后的路径信息都被忽略
hobbyliu
2015-09-10 16:47:14 +08:00
@yunfeifan postman 插件里面的一个方法, 没法发现请求域的设置呢?

``
//Send the current request
send:function (responseRawDataType ) {
pm.request.prepareForSending ();
if (pm.request.url === "") {
return;
}

var originalUrl = $('#url').val (); //Store this for saving the request
var url = pm.request.encodeUrl (pm.request.url );
var method = pm.request.method.toUpperCase ();
var originalData = pm.request.body.getData (true );

//Start setting up XHR
var xhr = new XMLHttpRequest ();
xhr.open (method, url, true ); //Open the XHR request. Will be sent later
xhr.onreadystatechange = function (event ) {
pm.request.response.load (event.target );
};

//Response raw data type is used for fetching binary responses while generating PDFs
if (!responseRawDataType ) {
responseRawDataType = "text";
}

xhr.responseType = responseRawDataType;
var headers = pm.request.getXhrHeaders (headers );
for (var i = 0; i < headers.length; i++) {
xhr.setRequestHeader (headers[i].name, headers[i].value );
}

// Prepare body
if (pm.request.isMethodWithBody (method )) {
var body = pm.request.getRequestBodyToBeSent ();
if (body === false ) {
xhr.send ();
}
else {
xhr.send (body );
}
} else {
xhr.send ();
}

pm.request.response.iframeRefreshedRecently = false;

pm.request.xhr = xhr;

//Save the request
if (pm.settings.get ("autoSaveRequest")) {
pm.history.addRequest (originalUrl,
method,
pm.request.getPackedHeaders (),
originalData,
pm.request.dataMode );
}

//Show the final UI
pm.request.updateUiPostSending ();
},
``
yunfeifan
2015-09-10 17:26:25 +08:00
@hobbyliu chrome 扩展 的 manifest.json 文件中
fengliu222
2015-09-11 00:08:44 +08:00
@yunfeifan 噗。。。你说的没错,我忘记了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/219683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX