<p><strong>长话短说:</strong>CORS策略:请求的资源上不存在“<strong>访问控制允许来源”</strong>”标头</p>
<p><strong>JS代码:</strong></p>
<pre><code>$.ajax({
type: "POST",
url: "https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry",
data: data,
success: function( data ) {
console.log(data);
}
});
</code></pre>
<p>使用JavaScript在页面内执行POST请求,将得到预期的响应,该页面显示以下内容:</p>
<blockquote>
<p>Registration check<br/>
Results for abc123 as at 29/03/2020 18:05 AEDT<br/>
Registration number:<br/>
ABC123<br/>
Registration status & expiry date:<br/>
Current - 26/03/2021<br/>
Vehicle:<br/>
2013 SILVER ISUZU DC UTE<br/>
VIN/Chassis:<br/>
MPATFS85JDT005836<br/>
Engine number:<br/>
LB8052<br/>
Registration serial number:<br/>
2276051<br/>
Compliance plate date:<br/>
07/2013<br/>
Sanction(s) applicable:<br/>
None<br/>
Goods carrying vehicle:<br/>
Yes<br/>
Transfer in dispute:<br/>
No<br/>
Download report PDF </p>
</blockquote>
<p>但是,从网站外部执行请求将获得CORS策略:无“<strong>访问控制允许源站”错误。从Python执行请求不一定会产生错误,但会导致错误的响应,这就是您得到的响应。此外,请求的数据应包括以下所有内容:</p>
<pre><code>data = {
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': {TOO LONG TO BE POSTED},
'__VIEWSTATEGENERATOR': '3ECD7CB5',
'__VIEWSTATEENCRYPTED': '',
'site-search-head': '',
'ph_pagebody_0$phheader_0$_FlyoutLogin$PersonalEmail$EmailAddress': '',
'ph_pagebody_0$phheader_0$_FlyoutLogin$PersonalPassword$SingleLine_CtrlHolderDivShown': '',
'ph_pagebody_0$phheader_0$_FlyoutLogin$OrganisationEmail$EmailAddress': '',
'ph_pagebody_0$phheader_0$_FlyoutLogin$OrganisationPassword$SingleLine_CtrlHolderDivShown': '',
'ph_pagebody_0$phheader_0$_FlyoutLogin$PartnerEmail$EmailAddress': '',
'ph_pagebody_0$phheader_0$_FlyoutLogin$PartnerPassword$SingleLine_CtrlHolderDivShown': '',
'ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$vehicle-type': 'car/truck',
'ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$vehicle-identifier-type': 'registration number',
'ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$RegistrationNumberCar$RegistrationNumber_CtrlHolderDivShown': 'abc123',
'honeypot': '',
'ph_pagebody_0$phthreecolumnmaincontent_1$panel$btnSearch': 'Search'
}
</code></pre>
<p><strong>按照此处的说明获取缺少的一个(<code>__VIEWSTATE</code>):</strong></p>
<p><a href="https://mkyong.com/computer-tips/how-to-view-http-headers-in-google-chrome/" rel="nofollow noreferrer">https://mkyong.com/computer-tips/how-to-view-http-headers-in-google-chrome/</a></p>